题意:
思路:
贪心的考虑,尽可能的将字符串变成出现最多的字母是最优的。
对于每一个字符串记录一下长度和出现最多的字母个数,最大美丽值就是m i n ( 长 度 , 出 现 最 多 字 母 个 数 + 操 作 次 数 )
如果仅仅出现了一种字母,仅操作一次的话,最大值就是长度− 1
代码:
#include<bits/stdc++.h> using namespace std; string s[4]; int n; struct node{ int len,id; }a[4]; bool cmp(node a,node b){ return a.len>b.len; } int cul(string s){ int cnt=0,len=s.size(); map<int,int>mp; for(int i=0;s[i];i++){ mp[s[i]]++; cnt=max(cnt,mp[s[i]]); } if(mp.size()==1&&n==1) return len-1; return min(len,cnt+n); } string name[]={"","Kuro","Shiro","Katie"}; int main(){ cin>>n; for(int i=1;i<=3;i++){ cin>>s[i]; a[i].len=cul(s[i]); a[i].id=i; } sort(a+1,a+1+3,cmp); if(a[1].len!=a[2].len) cout<<name[a[1].id]<<endl; else cout<<"Draw"; return 0; }