CF1883B Chemistry
题目描述
给定一个长度为 $n$ 的字符串 $s$,该字符串仅包含小写拉丁字母,以及一个整数 $k$。
你需要判断是否可以恰好从字符串 $s$ 中删除 $k$ 个字符,使得剩下的字符可以重新排列成一个回文串。注意,你可以任意重新排列剩下的字符。
回文串是指正着读和反着读都相同的字符串。例如,字符串 "z"、"aaa"、"aba"、"abccba" 都是回文串,而 "codeforces"、"reality"、"ab" 不是回文串。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的第一行包含两个整数 $n$ 和 $k$($0 \leq k < n \leq 10^5$),分别表示字符串 $s$ 的长度和要删除的字符数。
每组测试用例的第二行包含一个长度为 $n$ 的字符串 $s$,仅包含小写拉丁字母。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每组测试用例,如果可以恰好删除 $k$ 个字符,使得剩下的字符可以重新排列成一个回文串,则输出 "YES";否则输出 "NO"。
输出时不区分大小写。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被认为是肯定的答案。
说明/提示
在第一个测试用例中,不能删除任何字符,字符串 "a" 本身就是回文串。
在第二个测试用例中,不能删除任何字符,字符串 "ab" 和 "ba" 都不是回文串。
在第三个测试用例中,可以删除任意一个字符,剩下的字符串都是回文串。
在第四个测试用例中,可以删除一个 "a",剩下的字符串为 "bb",是回文串。
在第六个测试用例中,可以各删除一个 "b" 和一个 "d",剩下的字符串为 "acac",可以重新排列为 "acca"。
在第九个测试用例中,可以各删除一个 "t" 和一个 "k",剩下的字符串为 "aagaa",是回文串。
由 ChatGPT 4.1 翻译