AT_abc444_d 题解
罚时呜呜。
考虑先用桶
那么可以视作由
注意一些实现上的小细节,具体见代码吧。
#include<bits/stdc++.h>
#define LL long long
#define UInt unsigned int
#define ULL unsigned long long
#define LD long double
#define pii pair<int,int>
#define pLL pair<LL,LL>
#define pDD pair<LD,LD>
#define fr first
#define se second
#define pb push_back
#define isr insert
using namespace std;
const int N = 5e5+5;
int n,a[N],t[N],b[N],cnt;
int read(){
int su=0,pp=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')pp=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){su=su*10+ch-'0';ch=getchar();}
return su*pp;
}
int main(){
n=read();
for(int i=1;i<=n;i++)
a[i]=read(),t[1]++,t[a[i]+1]--;
sort(a+1,a+n+1);
for(int i=1;i<=a[n];i++)t[i]+=t[i-1];
for(cnt=1;cnt<=a[n]||b[cnt];cnt++){
if(cnt<=a[n])b[cnt]+=t[cnt];
b[cnt+1]+=b[cnt]/10,b[cnt]%=10;
}for(int i=cnt-1;i>=1;i--)cout<<b[i];cout<<"\n";
return 0;
}
如果本篇题解对你有帮助的话,麻烦你点一个小小的赞,真是太感谢啦!