CodeForces 1883B Chemistry

题目链接:CodeForces 1883B【Chemistry】



思路

       判断最多删去k个字符后剩下的部分为回文字符串,所以优先删除将个数为奇数个的相同字符删为偶数,当最后留下的字符串中,奇数个数的相同字符种类小于等于1时才会是回文字符串,如:aaabbbccc,此时个数为奇数的相同字符种类有三种,分别为a,b,c,所以最少要将a,b,c三种中的两种字符分别删去一个,才能得到回文字符串,假设删去一个b和一个c,得到aaabbcc,排列后得到cbaaabc。所以先计算奇数个数的相同字符种类小于等于k + 1时,就可以通过操作得到回文串。


代码

#include <bits/stdc++.h>
using namespace std;
int num[30];
void solve() {
int n, k;
cin >> n >> k;
string s;
cin >> s;
memset(num, 0, sizeof num);
int len = s.size();
for (int i = 0; i < len; i++) {
num[s[i] - 'a']++;
}
int count = 0;
for (int i = 0; i < 26; i++) {
if (num[i] % 2)
count++;
}
if (count - k <= 1) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}
posted @   薛定谔的AC  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示