【模拟】洛谷 P1097 统计数字
来源:互联网 发布:男士 长袖 知乎 编辑:程序博客网 时间:2024/06/11 19:58
题目描述
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入输出格式
输入格式:
输入文件count.in包含n+1行;
第一行是整数n,表示自然数的个数;
第2~n+1每行一个自然数。
输出格式:
输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
输入输出样例
输入样例#1:
8
2
4
2
4
5
100
2
100
输出样例#1:
2 3
4 2
5 1
100 2
说明
40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)
NOIP 2007 提高第一题
代码
#include<iostream>using namespace std;long long a[200005],temp[200005];void mergesort(int left,int right){ if(left==right)return ; int mid=(left+right)/2; mergesort(left,mid); mergesort(mid+1,right); int i=left,j=mid+1,k=left; while(i<=mid&&j<=right) { if(a[i]>a[j])temp[k++]=a[j++]; else temp[k++]=a[i++]; } while(i<=mid)temp[k++]=a[i++]; while(j<=right)temp[k++]=a[j++]; for(int m=left;m<=right;m++)a[m]=temp[m];}int main(){ int n; cin>>n; for(int i=0;i<n;i++)cin>>a[i]; mergesort(0,n-1); int sum=1; cout<<a[0]; long long x=a[0]; for(int i=1;i<n;i++) { if(a[i]==x)sum++; else { cout<<' '<<sum<<endl; cout<<a[i]; x=a[i]; sum=1; } } cout<<' '<<sum; return 0;}
0 0
- 【模拟】洛谷 P1097 统计数字
- 洛谷 P1097 统计数字
- 洛谷 P1097 统计数字
- P1097 统计数字
- 【模拟】统计数字
- (ssl1063)P1097 2007年分区联赛提高组之一 统计数字
- 【模拟】【RQNOJ】统计数字
- [模拟][NOIP2007] 统计数字
- 【map练习】【map+模拟】codevs1164 统计数字题解
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- 统计数字
- boost noncopyable实现与ADL
- SpringMvc下实现delete和put请求
- 融资前和投资人的一次讨论
- hdu 1012 u Calculate e
- 几个适合学习虚幻4的社区和帖子
- 【模拟】洛谷 P1097 统计数字
- 使用MultiValueMap巧妙解决拼字符串问题
- 使用Eclipse RCP进行桌面程序开发(一):快速起步
- 3D数学基础 图形与游戏开发的学习 第四章 向量
- 数据库 事务
- 什么是机器学习?
- scikit-learn 文本挖掘概念
- POI Workbook接口和HSSFWorkbook对象和XSSFWorkbook对象操作相应excel版本
- C# 委托(Delegate)