您的位置:首页 > 其它

SSL_1063_统计数字_hash

2016-12-10 11:15 127 查看

题目大意

求每一个数字出现的次数

思路

hash存储,然后排序就可以了

O(nlogn)

#include <stdio.h>
#include <algorithm>
using namespace std;
#define empty 0x7fffffff
#define p 5201314
int h[p+1],ans=0,f[p+1];
struct arr
{
long long x1,x2;
};
arr a[p+1];
int cam(arr a,arr b)
{
return a.x1<b.x1;
}
int find(int x)
{
int i=x%p;
while (h[i]!=0&&h[i]!=x) i=(i+1)%p;
h[i]=x;
f[i]++;
}
int main()
{
int n,m;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
find(x);
}
int t=0;
for (int i=1;i<=p;i++)
if (h[i]!=0)
{
t++;
a[t].x1=h[i];
a[t].x2=f[i];
}
sort(a+1,a+t+1,cam);
for (int i=1;i<=t;i++)
{
printf("%I64d %I64d\n",a[i].x1,a[i].x2);
}
return 0;
}

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: