CF1883B.Chemistry

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Chemistry

题目描述

给定一个长度为 nn 的字符串 ss,该字符串仅包含小写拉丁字母,以及一个整数 kk

你需要判断是否可以恰好从字符串 ss 中删除 kk 个字符,使得剩下的字符可以重新排列成一个回文串。注意,你可以任意重新排列剩下的字符。

回文串是指正着读和反着读都相同的字符串。例如,字符串 "z"、"aaa"、"aba"、"abccba" 都是回文串,而 "codeforces"、"reality"、"ab" 不是回文串。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。接下来是每组测试用例的描述。

每组测试用例的第一行包含两个整数 nnkk0k<n1050 \leq k < n \leq 10^5),分别表示字符串 ss 的长度和要删除的字符数。

每组测试用例的第二行包含一个长度为 nn 的字符串 ss,仅包含小写拉丁字母。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每组测试用例,如果可以恰好删除 kk 个字符,使得剩下的字符可以重新排列成一个回文串,则输出 "YES";否则输出 "NO"。

输出时不区分大小写。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被认为是肯定的答案。

说明/提示

在第一个测试用例中,不能删除任何字符,字符串 "a" 本身就是回文串。

在第二个测试用例中,不能删除任何字符,字符串 "ab" 和 "ba" 都不是回文串。

在第三个测试用例中,可以删除任意一个字符,剩下的字符串都是回文串。

在第四个测试用例中,可以删除一个 "a",剩下的字符串为 "bb",是回文串。

在第六个测试用例中,可以各删除一个 "b" 和一个 "d",剩下的字符串为 "acac",可以重新排列为 "acca"。

在第九个测试用例中,可以各删除一个 "t" 和一个 "k",剩下的字符串为 "aagaa",是回文串。

由 ChatGPT 4.1 翻译

样例

14
1 0
a
2 0
ab
2 1
ba
3 1
abb
3 2
abc
6 2
bacacd
6 2
fagbza
6 2
zwaafa
7 2
taagaak
14 3
ttrraakkttoorr
5 3
debdb
5 4
ecadc
5 3
debca
5 3
abaac
YES
NO
YES
YES
YES
YES
NO
NO
YES
YES
YES
YES
NO
YES

在线编程 IDE

建议全屏模式获得最佳体验