CF447B DZY Loves Strings 题解
\(\texttt{Solution}\):
-
先算出来题目给定的字符串的价值。
-
对于插入字符,手玩样例可知每个字符可以插入无数次,使用贪心策略,每次挑选价值最大的字母插入。
注:
-
价值最大的字母可以边输入边记录,初始化最大值时应定义非正数,以便更新最大值。
-
在枚举时,要注意价值的计算方法,不要算错。
\(\texttt{Code}\):
#include<bits/stdc++.h> //万能头文件
using namespace std;
string s;
int k,a[30];
int ans,maxn=-9999999;
//ans 记录最终价值,maxn 记录 价值最大的字符的价值
signed main()
{
cin>>s>>k;
for(int i=0;i<26;i++) cin>>a[i],maxn=max(maxn,a[i]);
//记录 价值最大的字符的价值
for(int i=0;i<s.size();i++) ans+=a[s[i]-'a']*(i+1);
//按照题意,把给定的字符串的总价值算出
for(int i=1;i<=k;i++) ans+=maxn*(s.size()+i);
//贪心,每次把价值最大的字母加入队尾
cout<<ans;
return 0;
}
以下是博客签名,正文无关
本文来自博客园,作者:Wy_x,转载请在文首注明原文链接:https://www.cnblogs.com/Wy-x/articles/18704583
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC-BY-NC-SA 4.0 协议)进行许可。

浙公网安备 33010602011771号