Sol.CF447B

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

题意

给定字符串 s,和每个字母的价值,问你在字符串后再增加 k 个字符后能获得的最大价值。

  • 题目中定义价值为 i=1leni×WSi

思路

仔细观察发现题目不难,是个贪心,找出这些价值中的最大值,然后拿最大值进行计算,最后注意要乘上 Wi

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 @   JacoAwA  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示