好久不做题了。。。有种智商被碾压的感觉。。。然后就挑了道水题做做
从低到高遍历一遍就行。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1010010;
long long a[MAXN];
int main()
{
long long n,x,i,ans;
while(~scanf("%lld",&n))
{
memset(a,0,sizeof(a));
while(n--)
{
scanf("%lld",&x);
a[x]++;
}
ans=0;
for(i=0;i<1010000;i++)
{
if(a[i])
{
a[i+1]+=a[i]>>1;
a[i]&=1;
if(a[i])
ans++;
}
}
printf("%lld\n",ans);
}
}

本文介绍了一道简单的ACM竞赛题目解决方法,通过遍历数组并处理数据来计算结果。该算法实现简单,适合初学者练习。
304

被折叠的 条评论
为什么被折叠?



