HDU-#1425 sort(Hash散列)
2014-07-11 20:22
274 查看
题目大意:给一个大数据范围的序列,按降序排列,输出前m个数据序列。
解题思路:由于数据量较大,直接sort(),会超时。因此,可以利用Hash函数的性质进行处理,这里可以直接利用输入值加上最大范围值N作为下标,那么根据下标值i的大小就可以判断数据在序列中的大小了,然后逆序输出前m个就可以了,输出值减去最大范围值就是目标值。其中哈希函数为i-N。注意使用C的输入输出流,如果使用C++的会超时。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1425
code:
解题思路:由于数据量较大,直接sort(),会超时。因此,可以利用Hash函数的性质进行处理,这里可以直接利用输入值加上最大范围值N作为下标,那么根据下标值i的大小就可以判断数据在序列中的大小了,然后逆序输出前m个就可以了,输出值减去最大范围值就是目标值。其中哈希函数为i-N。注意使用C的输入输出流,如果使用C++的会超时。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1425
code:
<pre name="code" class="cpp">#include <iostream> #include <cstdio> using namespace std; const int N = 500001; int hash[2*N]={0}; int main(){ int n,m,max,num; while(scanf("%d%d",&n,&m)!=EOF){ max=0; for(int i=0;i<n;i++){ scanf("%d",&num); if(num>max) max=num; hash[num+N]=1; } for(int i=max+N;i>=0&&m>0;i--){ if(hash[i]){ if(m==1) printf("%d\n",i-N); else printf("%d ",i-N); m--;hash[i]=0; } } } return 0; }
相关文章推荐
- hdu 1425 sort【hash方法】
- HDU 1425 sort hash+加速输入
- hdu 1425 sort hash
- hdu_1425_sort ( hash 入门 )
- HDU 1425 sort hash+加速输入
- sort 1425 hdu(hash 和 sort排序)
- hdu 1425 sort ---- hash入门
- HDU 1425 sort (hash)
- HDU 1425 Sort
- HDU 1425:sort
- hdu 1425 sort
- hdu1425 排序+hash
- sort (HDU_1425) 快速排序
- HDOJ 1425 sort hash(雾)
- hdu 1425 Sort
- HDU 1425 sort
- HDU 1425 sort(快速排序)
- hdu 1425 sort
- HDU 1425 sort 题解
- HDU1425:sort(哈希思想!)