HDU 1280 前m大的数(hash)
来源:互联网 发布:笔记本电脑如何优化 编辑:程序博客网 时间:2024/05/29 13:38
题目大意:
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
解题思路:
这道题是我们第一次训练时做的题目,当时大家连菜鸟都不是,不过这道题大部分都过了,因为HD的数据实在太水了,大家随便开了一个超级大的数组,把每两项的和求出
来放在数组里再排个序就能过了。现在再看这道题,还是很水,不过不能再用那种方法做了,这应该算个很基础的入门hash题,跟基数排序差不多,把每一个值映射到数组里,因
为题目中已经给出数据范围是不超过5000的,所以只需要开一个10000的数组就够了,代码如下。
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;const int maxn = 10000 + 10;int hash[maxn];int a[maxn];int n,m;int main(){ while(cin>>n>>m) { memset(hash,0,sizeof(hash)); for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) { hash[a[i]+a[j]]++; } int k=m; for(int i=maxn-1;k>=1;i--) { if(hash[i]) { while(hash[i]&&k>=1) { if(k==1) printf("%d",i); else printf("%d ",i); hash[i]--; k--; } } } printf("\n"); } return 0;}
0 0
- hdu 1280 前m大的数 (hash)
- hdu 1280 前m大的数(hash函数基础)
- hdu 1280 前m大的数(hash函数基础)
- HDU 1280 前m大的数(hash)
- HDU 1280 前m大的数 【整数Hash】
- HDU 1280 前m大的数(简单HASH)
- HDU 1280 前m大的数
- hdu 1280 前m大的数
- hdu-1280-前m大的数
- hdu 1280 前m大的数
- hdu 1280 前m大的数
- hdu 1280 前m大的数
- hdu 1280 前m大的数
- HDU 1280 前m大的数
- hdu------1280 前m大的数
- HDU:1280 前m大的数
- hdu 1280 前m大的数
- 【HDU-1280】 前m大的数
- IOS学习笔记36—解决键盘遮挡输入框(UITextField)问题
- 浅析企业该怎么做事件营销
- Android AES算法示例
- JAVA责任链模式在请假环节中的应用
- 泛型C#
- HDU 1280 前m大的数(hash)
- c++ 智能指针及 循环引用问题
- 如何在网上查某个基因的转录因子及启动子
- c语言静态变量和静态函数
- CF 414C Mashmokh and Reverse Operation(分治)
- Pig
- Go语言里channel的死锁
- git clone 出错
- Coursera 程序设计实习 / Practice on Programming 笔记(第一周)