CF624B - Making a String

来源:互联网 发布:股票技术分析软件 编辑:程序博客网 时间:2024/05/21 11:16

题目大意:一个字符串由n种字符构成,现在给定每种字符出现的最多次数,让你构造一个字符串,使得出现过的字符的个数各不相同,求字符串最长长度。

字符串出现次数从高到低排序,能用最多的就用最多的,不能就减一,到0为止。

#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;int n;int a[30];int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+1+n);long long ans=0;int ji=a[n]+1;for(int i=n;i>=1;i--){if(ji>a[i]){ji=a[i];}else{if(ji)ji--;}ans+=ji;}cout<<ans<<endl;return 0;}


0 0
原创粉丝点击