約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1-26之間的整數。
約翰不在乎字母大小寫。(也就是說字母f和f)的完美度相同。給定乙個字串,輸出它的最大可能的完美度。例如:dad,你可以將26分配給d,25分配給a,這樣整個字串完美度為77。
input
輸入乙個字串s(s的長度 <= 10000),s中沒有除字母外的其他字元。output
由你將1-26分配給不同的字母,使得字串s的完美度最大,輸出這個完美度。input示例
dadoutput示例
77思路:先進行大小寫轉換並統計各字母出現次數,然後排序,最後按出現次數的順序分配權值,出現次數越多,權值越大,累加即可。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include12using
namespace
std;
13#define lowbit(x) (x&(-x))
14#define max(x,y) (x>y?x:y)
15#define min(x,y) (x16
#define max 100000000000000000
17#define mod 1000000007
18#define pi acos(-1.0)
19#define ei exp(1)
20#define pi 3.141592653589793238462
21#define inf 0x3f3f3f3f3f
22#define mem(a) (memset(a,0,sizeof(a)))
23 typedef long
long
ll;24
const
int n=10005;25
const
int mod=1e9+7;26
bool cmp(char x,char
y)27
30string
s;31
int letter[100] = ;
32int
main()
3339 sort(letter+65,letter+91
);40
int val = 26,ans = 0;41
for (int i=90;i>=65;i--)
42 ans +=letter[i]*val--;
43 printf("
%d\n
", ans);44}
45return0;
46 }
51nod1182 完美字串
題意 給定乙個字串,然後可以隨意分配每個字元1 26的完美度,問最大完美度是多少。思路 貪心,開始太疏忽,沒有想到貪心,因為26肯定是分配給出現次數最多的那個,其他依次遞減。我用乙個陣列儲存每個字元出現的次數,然後在從大到小排序就行。include include include includeus...
51nod1182 完美字串
約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1 26之間的整數。約翰不在乎字母大小寫。也就是說字母f和f 的完美度相同。給定乙個字串,輸出它的最大可能的完美度。例如 dad,你可以將26分配給d,25分配給a,這樣整個字串完美...
51 nod 1182 完美字串
1182 完美字串 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 約翰認為字串的完美度等於它裡面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應乙個1 26之間的整數。約翰不在乎字母大小寫。也就是說字母f和f 的完美度相同。給定...