HDOJ 1280 前m大的數(sort)

2021-07-15 10:18:30 字數 928 閱讀 1769

前m大的數(sort)time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

還記得gardon給小希布置的那個作業麼?(上次比賽的1005)其實小希已經找回了原來的那張數表,現在她想確認一下她的答案是否正確,但是整個的答案是很龐大的表,小希只想讓你把答案中最大的m個數告訴她就可以了。 

給定乙個包含n(n<=3000)個正整數的序列,每個數不超過5000,對它們兩兩相加得到的n*(n-1)/2個和,求出其中前m大的數(m<=1000)並按從大到小的順序排列。

input

輸入可能包含多組資料,其中每組資料報括兩行: 

第一行兩個數n和m, 

第二行n個數,表示該序列。 

output

對於輸入的每組資料,輸出m個數,表示結果。輸出應當按照從大到小的順序排列。

sample input

4 4

1 2 3 4

4 55 3 6 4

sample output

7 6 5 5

11 10 9 9 8

#include#includeusing namespace std;

int b[4500000];//一定要定義在main函式之前,否則記憶體會爆掉!!

bool cmp(int a,int b)//自定義bool型比較函式

int main()

return 0;

}

hdoj 1280 前m大的數!

思路 這題和矩陣轉置有一點聯絡,它們兩兩相加得到的 n n 1 2 個和,其實就是矩陣的上三角或下三角,這一點解決了,再來個qsort就搞定啦!還有注意陣列的大小!我在這栽跟頭了 inta 3005 c 5000000 注意陣列的大小!intmain qsort c,k,sizeof int com...

hdoj 1280 前M大的數

最開始的思路是 最大的和肯定由原始序列種最大的前k個數兩兩組合產生,由於m 1000,所以輸入序列中的前50個數就夠用了 50 49 2 1225 1000 然後用兩次stl裡的排序就能求出最大的m個數了,不知道為啥一直wa。只好寫了個counting sort ac了。方法一 計數排序 prog ...

HDOJ 1280 前m大的數

超級傳送門 由於n 3000,它們和的組合n n 1 2是乙個比較大的數,直接暴力求解必然tle。不過題目中說了 每個數不超過5000,而且都是正整數,所以可以用hash來嘗試一下。includeint main while scanf d d n,m eof else printf printf ...