首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7909:统计数字

7909:统计数字

作者头像
attack
发布2018-04-12 15:35:08
7950
发布2018-04-12 15:35:08
举报

7909:统计数字

总时间限制:1000ms内存限制:65536kB描述

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

输入包含n+1行:

第一行是整数n,表示自然数的个数;

第2~n+1每行一个自然数。

40%的数据满足:1<=n<=1000;

80%的数据满足:1<=n<=50000;

100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*10^9)。输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。样例输入

8
2
4
2
4
5
100
2
100

样例输出

2 3
4 2
5 1
100 2

来源NOIP2007复赛 提高组 第一题分析:一开始以为是一个二分兼快拍的难题。。当我一脸懵逼的看着满是超时的结果时。。我才恍然发现这TM就是一个简单的线性数据处理!!!!!!!!!!!!!!啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int a[10000001];
 6 struct node
 7 {
 8     int daxiao;
 9     int cishu;
10 }b[10000001];
11 int now=1;
12 int main()
13 {
14     int n;
15     cin>>n;
16     for(int i=1;i<=n;i++)
17     {
18         cin>>a[i];
19     }
20     sort(a+1,a+1+n);
21     for(int i=1;i<=n;i++)
22     {
23         if(a[i]==a[i+1])
24         {
25             b[now].cishu++;
26             continue;
27         }
28         else
29         {
30             b[now].daxiao=a[i];
31             b[now].cishu++;
32             now++;
33         }
34     }
35     for(int i=1;i<=now-1;i++)
36     {
37         cout<<b[i].daxiao<<" "<<b[i].cishu<<endl;
38     }
39     return 0;
40 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7909:统计数字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档