Sol.CF447B

随机跳题跳到的,写篇题解吧

题意

给定字符串 \(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;
}
posted @ 2023-09-12 19:28  JacoAwA  阅读(20)  评论(0)    收藏  举报