HDU1425_sort
2014-07-22 21:15
113 查看
题目大意:
给你 n 个整数,按顺序输出其中前 m 大的数。
题目测试数据与数据范围:
其中 0<n,m<1000000, n 个数也各不相同,且都处于区间 [-500000,500000]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425
题目分折:
要知道给出的数的范围是 (0,1000000),对于一般的排序算法的复杂度是 n*logn.那么这么大的数是否会超时,我想会,再看到区间的范围是[-500000,500000],且都不相同,那么我们是否可以开一个 hash[1000010] 的数组,对于任何一个输入的 X,令hash[X+500000] = 1,待输入完成之后,从后往前遍历这个数组,如果对于第 i 个数有标记为1,hash[i] == 1,输出 i-500000。前 m 个即可。
小乐一下:
这道题是较为简单的 hash 运用,是时间复杂度最低的一种技术,时间复杂度可以降低为 n .但一般都得自己找一个好的哈希函数,而且存在冲突问题。当然对于字符串用哈希技术有一个叫做 ELF 的东西,有兴趣的可以查一下相关资料,而对于上面这道题目,如果 n 个数之间存在相同的,把标记改为 ++ ,输出的时候 --即可。
代码秀一下,更好更简洁的由你们来实现,不要直接复制。
伟大的梦想成就伟大的人,从细节做好,从点点滴滴做好,从认真做好。
给你 n 个整数,按顺序输出其中前 m 大的数。
题目测试数据与数据范围:
5 3 3 -35 92 213 -644
213 92 3
其中 0<n,m<1000000, n 个数也各不相同,且都处于区间 [-500000,500000]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425
题目分折:
要知道给出的数的范围是 (0,1000000),对于一般的排序算法的复杂度是 n*logn.那么这么大的数是否会超时,我想会,再看到区间的范围是[-500000,500000],且都不相同,那么我们是否可以开一个 hash[1000010] 的数组,对于任何一个输入的 X,令hash[X+500000] = 1,待输入完成之后,从后往前遍历这个数组,如果对于第 i 个数有标记为1,hash[i] == 1,输出 i-500000。前 m 个即可。
小乐一下:
这道题是较为简单的 hash 运用,是时间复杂度最低的一种技术,时间复杂度可以降低为 n .但一般都得自己找一个好的哈希函数,而且存在冲突问题。当然对于字符串用哈希技术有一个叫做 ELF 的东西,有兴趣的可以查一下相关资料,而对于上面这道题目,如果 n 个数之间存在相同的,把标记改为 ++ ,输出的时候 --即可。
代码秀一下,更好更简洁的由你们来实现,不要直接复制。
#include<stdio.h> #include<string.h> int hash[1000010]; int main(){ int a; int n,m; while(scanf("%d%d",&n,&m)!=EOF){ memset(hash,0,sizeof(hash)); for(int i = 0;i<n;i++){ scanf("%d",&a); hash[a+500000] = 1; } int first = 1; for(int i = 1000010;i>=0;i--){ if(hash[i]) { if(first) {printf("%d",i-500000);first=0;} else printf(" %d",i-500000); m--; if(m==0) break; } } printf("\n"); } return 0; }
伟大的梦想成就伟大的人,从细节做好,从点点滴滴做好,从认真做好。
相关文章推荐
- hdu1425 sort
- HDU1425-sort
- HDU1425 sort【水题】
- HDU1425:sort
- hdu1425 sort(哈希表)
- HDU1425 <sort 快排>
- sort HDU1425 TLE?!
- HDU1425 sort
- HDU1425 sort 【STL堆排序】
- HDU1425:sort
- hdu1425 sort (hash)
- HDU1425 sort【排序】
- HDU1425-sort
- HDU1425----sort
- 用Java集合中的Collections.sort方法对list排序的两种方法
- Sort tuple or multiple field with operator
- linux 命令 — sort、uniq
- Insertion Sort List
- Sort(归并)
- 借助vector容器对结构体数据进行sort快排