codeforces 447 B. DZY Loves Strings

简单贪心。 因为填的字母没有次数限制,所以最优策略很容易想到,就是在最后面填最大的。 不用实际去填,算出ans就可以。

 1 
 2
 3    
 4    #include <iostream>
 5    #include <cmath>
 6    #include <cstring>
 7    #include <algorithm>
 8    
 9    using namespace std;
10    
11    int main()
12    {
13        int k,len;
14        char st[2000];
15        int a[2000];
16        memset(a,0,sizeof(a));
17        int w[50];
18        cin>>st>>k;
19        int m=-1;
20        for (int i=1;i<=26;i++)
21        {
22    
23            cin>>w[i];
24            if (w[i]>m)
25                m=w[i];
26        }
27        len=strlen(st);
28        for (int i=0;i<len;i++)
29            a[i]=(int)(st[i]-96);
30            long long ans=0;
31            for (int i=0;i<len;i++)
32            {
33                ans=ans+w[a[i]]*(i+1);
34               //    cout<<ans<<endl;
35            }
36            for (int i=len;i<len+k;i++)
37                ans=ans+m*(i+1);
38            cout<<ans<<endl;
39        return 0;
40    }
41