hdu1280 前m大的數(雜湊打表)
阿新 • • 發佈:2019-02-10
題意:中文題
思路:3000*3000個數數量很大,所以只需對其大小雜湊打表即可。水題秒之。
#include <stdio.h> #include <algorithm> #include <string.h> #include <queue> #include <iostream> using namespace std; typedef long long ll; const int N = 10000; const int INF = 0x3f3f3f3f; int table[N], num[3001]; int main() { // freopen("in.txt", "r", stdin); int n, m; while(~scanf("%d%d", &n, &m)) { memset(table, 0, sizeof(table)); int Max = -INF; for(int i = 1; i <= n; i++) { scanf("%d", &num[i]); Max = max(Max, num[i]); for(int j = 1; j < i; j++) { table[num[i]+num[j]]++; } } int flag = 0; for(int i = 2*Max; i >= 1; i--) { if(m==0) break; if(table[i]!=0) { if(flag) printf(" "); flag = 1; printf("%d", i); table[i]--; m--; i++; } } // printf("%d", Max); printf("\n"); } return 0; }