您的位置:首页 > 其它

B. DZY Loves Strings

2014-07-15 20:44 204 查看
B. DZY Loves Strings

time limit per test
1 second

memory limit per test
256 megabytes

input
standard input

output
standard output

DZY loves collecting special strings which only contain lowercase letters. For each lowercase letterc DZY knows its value
wc. For each special strings = s1s2...s|s|
(|s| is the length of the string) he represents its value with a functionf(s), where



Now DZY has a string s. He wants to insertk lowercase letters into this string in order to get the largest possible value of the resulting string. Can you help him calculate the
largest possible value he could get?

Input
The first line contains a single string s (1 ≤ |s| ≤ 103).

The second line contains a single integer k (0 ≤ k ≤ 103).

The third line contains twenty-six integers from wa towz. Each such number is non-negative and doesn't
exceed1000.

Output
Print a single integer — the largest possible value of the resulting string DZY could get.

Sample test(s)

Input
abc
3
1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1


Output
41


Note
In the test sample DZY can obtain "abcbbc",value = 1·1 + 2·2 + 3·2 + 4·2 + 5·2 + 6·2 = 41.

//水题

//AC代码

//找到字符串中最大的值即可

#include<iostream>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
const int Max=1001;
int value[27];
char s[Max];
using namespace std;
int main()
{
int n,k,m,maxn,t,i,j;
long long sum;
//while(1)
//{
cin>>s;
cin>>k;
sum=0;
n=strlen(s);
maxn=-999999;
memset(value,0,sizeof(value));
for(i=1;i<=26;i++)
{
cin>>value[i];
if(maxn<value[i])
maxn=value[i];
}
for(i=0;i<n;i++)
{
m=value[(s[i]-'a'+1)]*(i+1);
sum+=m;
}
//cout<<maxn<<" "<<n<<" "<<sum<<endl;
for(i=1;i<=k;i++)
{
sum+=(n+i)*maxn;
}
cout<<sum<<endl;
//}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CF_Div. 2_#254