
【SSL 1063&洛谷 P1097】[分区联赛提高组] 统计数字【哈希表】
发布日期:2021-05-06 18:48:25
浏览次数:22
分类:精选文章
本文共 1073 字,大约阅读时间需要 3 分钟。
2007年分区联赛提高组之一 统计数字
Time Limit:1000MS Memory Limit:256000K
Description
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
Input
输入包含n+1行;
第一行是整数n,表示自然数的个数; 第2~n+1每行一个自然数。Output
输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
Sample Input
8242451002100
Sample Output
2 34 25 1100 2
分析:
可哈希表 也可以直接暴力
数据不大 哈希的方法不难暴力CODE:
#include#include #include using namespace std;int a[200001];int n,m;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } sort(a+1,a+n+1); for(int i=1;i<=n;){ cout< <<" "; int sum=1; int j=i+1; while(a[i]==a[j]&&j<=n) j++,sum++; i=j; cout< <
哈希表CODE:
手动开了O2优化 极限卡时间 997MS
#include#include #include #define p 299993#pragma GCC optimize(2)using namespace std;struct hashs{ int c,num;}hash[p];int n,s;int hash2(int y){ return y%p; //哈希函数}int locate(int x){ int q=hash2(x),i=0; while(i y.num; //排序 return x.c
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月27日 18时46分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SDWebImage--http图片加载不出来的问题
2021-05-08
Application received signal SIGSEGV
2021-05-08
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2021-05-08
SLAM学习笔记-求解视觉SLAM问题
2021-05-08
普歌-允异团队-HashMap面试题
2021-05-08
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2021-05-08
程序员应该知道的97件事
2021-05-08
create-react-app路由的实现原理
2021-05-08
PSI值
2021-05-08
JavaScript上传下载文件
2021-05-08
MapReduce
2021-05-08
Linux环境变量配置错误导致命令不能使用(杂谈)
2021-05-08
openstack安装(六)镜像glance服务安装
2021-05-08
openstack安装(九)网络服务的安装--控制节点
2021-05-08
shell编程(六)语言编码规范之(变量)
2021-05-08
vim杂谈(三)之配色方案
2021-05-08
vimscript学习笔记(二)预备知识
2021-05-08
vimscript学习笔记(三)信息打印
2021-05-08
awk杂谈之数组习题
2021-05-08