
https://codeforces.com/problemset/problem/447/B
简单的贪心,添加权重最大的值即可。
#include<bits/stdc++.h>
using namespace std;
int a[30],k;
int main(void)
{
string s; cin>>s;
cin>>k;
int temp=0;
for(int i=0;i<26;i++) cin>>a[i],temp=max(temp,a[i]);
long long int sum=0;
for(int i=0;i<s.size();i++)
{
sum+=(i+1)*a[s[i]-'a'];
}
for(int i=s.size()+1,j=1;j<=k;i++,j++)
{
sum+=i*temp;
}
cout<<sum;
return 0;
}
这篇博客介绍了如何使用简单的贪心策略来解决CodeForces平台上的一个题目,涉及字符数组操作和加权求和。通过max函数找到最大权重值,动态调整并计算总和。
1109

被折叠的 条评论
为什么被折叠?



