注意到我们只需要转换小写字母即可。
我们记录每个字符串的小写字母个数为cnt:
当操作数k≤cnt时,只需要大写字母+操作数k=最终的大写字母个数;
当操作数k>cnt时,则所有字母都可以转为大写,但是会剩余操作次数k-cnt,最后对单个字母操作,若为奇数就n-1,反之为n。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n,k;
int cnt;
string s;
int main() {
scanf("%d %d",&n,&k);
cin >> s;
for(int i=0;i<s.size();i++){
if(s[i] > 'Z')
++cnt;
}
if(k <= cnt)
printf("%d",n-cnt+k);
else
printf("%d",n-((k-cnt)%2));
return 0;
}

京公网安备 11010502036488号