51NOD 1182 完美字符串

Posted sortmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51NOD 1182 完美字符串相关的知识,希望对你有一定的参考价值。

 

题目来源: Facebook Hacker Cup选拔
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

 

约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。

 

Input
输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。
Output
由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。
Input示例
dad
Output示例
77

题解:基本的字符处理题,统计每个字符出现的次数,排序之后乘1-26即可。

AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int a[30];
 7 char s[10007];
 8 int main()
 9 {
10     cin>>s;
11     int n = strlen(s);
12     memset(a,0,sizeof(a));
13     for(int i=0;i<n;i++)
14     {
15         int x;
16         if(s[i]>=a)x=s[i]-a;
17         else if(s[i]>=A)x=s[i]-A;
18         a[x]++;
19     }
20     sort(a,a+26);
21     long long ans = 0;
22     for(int i=25;i>=0;i--)
23     {
24         ans+=a[i]*(i+1);
25     }
26     cout<<ans<<endl;
27     return 0;
28 }

 

以上是关于51NOD 1182 完美字符串的主要内容,如果未能解决你的问题,请参考以下文章

51nod 1182 完美字符串字符串排序+哈希

51Nod 1182 完美字符串 (贪心)

51nod贪心算法入门-----完美字符串

51nod1313 完美串

51nod 1232:完美数

51nod-1232: 完美数