时间: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;}