题目描述
根据题目意思可以知道,我们让插入的位置对答案的贡献尽可能的大
所以我们只需要让插入的价值大,并且价值越大,位置越靠后
所以我们只需要在原字符串后面插入k个价值最大的字母就可以了
C++ 代码
#include <bits/stdc++.h>
using namespace std;
string s;
int k,m;
int w[30];
int main(){
cin >> s >> k;
for(int i = 0; i < 26; i++)
{
cin >> w[i];
if(w[i] > w[m]) m = i;
}
while(k--) s += m + 'a';
long long res = 0,t = 0;
for(auto &i: s) res += w[i - 'a'] * (++t);
cout << res;
}