随机跳题跳到的,写篇题解吧
题意
给定字符串 \(s\),和每个字母的价值,问你在字符串后再增加 \(k\) 个字符后能获得的最大价值。
- 题目中定义价值为 \(\sum_{i=1}^{len} i \times W_{S_i}\)。
思路
仔细观察发现题目不难,是个贪心,找出这些价值中的最大值,然后拿最大值进行计算,最后注意要乘上 \(W_i\)。
Code
#include<iostream>
#include<string>
using namespace std;
string str;
int k,a[30],ans,maxn=-2147483647;
int main(){
cin>>str>>k;
for(int i=1;i<=26;i++){
cin>>a[i];
maxn=max(a[i],maxn);
}
for(int i=1;i<=str.size();i++){
ans+=(i+1)*a[s[i]-'a'];
}
for(int i=1;i<=k;i++){
ans+=maxn*(i+str.size());
}
cout<<ans;
return 0;
}
标签:int,Sol,maxn,str,CF447B,include
From: https://www.cnblogs.com/JacoAwA/p/CF447B.html