时间:2016-04-13 23:36:46 星期三
题目编号:[2016-04-13][codeforces][447][B][DZY Loves Strings]
题目大意:已知每个字母的权值,给定一个字符串s,问,插入k个字母进入字符串s之和,最多能得到多大的权值
分析:直接往s后面插入k个权值最大的字母
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[1000 + 10];
int w[27];
int main(){
long long ans = 0;int wmax = 0,k;
scanf("%s%d",str,&k);
int len = strlen(str);
for(int i = 0 ; i < 26 ; ++i){
scanf("%d",w+i);
wmax = max(wmax,w[i]);
}
for(int i = 0 ;i < len ; ++i){
ans += (long long )(i+1) * w[str[i] - 'a'];
}
ans += (long long )wmax*(len + 1 + len + k)*k/2;
printf("%I64d\n",ans);
return 0;
}