前m大的數 (雜湊)

2021-09-26 03:16:11 字數 937 閱讀 4387

原題目:

還記得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#include#include#include#include#includeusing namespace std;

typedef unsigned long long ull;//若雜湊結果超出ll的範圍可以自動取模ll_max

const int maxn=3004;

int a[maxn],sum[10005];

int main()

int main()

{ int n, m;

int len, tmp;

while(~scanf("%d%d", &n, &m))

{len = 0;

tmp = min(n,m);

for(int i=0; i思路:

雜湊解法感覺根本沒用雜湊啊,我也很迷,但是思路並不難,用sum陣列表示兩兩相加,來找sum陣列判斷即可

雜湊演算法 sort 前M大的數

給你n個整數,請按從大到小的順序輸出其中前m大的數。input 每組測試資料有兩行,第一行有兩個數n,m 0 500000 500000 500000,500000 的整數。output 對每組測試資料按從大到小的順序輸出前m大的數。sample input 5 3 3 35 92 213 644 ...

前m大的數

total submission s 13762 accepted submission s 4693 problem description 還記得gardon給小希布置的那個作業麼?上次比賽的1005 其實小希已經找回了原來的那張數表,現在她想確認一下她的答案是否正確,但是整個的答案是很龐大的表...

前m大的數

a 前m大的數 sort time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 還記得gardon給小希布置的那個作業麼?上次比賽的1005 其實小希已經找回了原來的那張數表,...