CF1924A Did We Get Everything Covered?

题目描述

给定两个整数 $n$ 和 $k$,以及一个字符串 $s$。 你的任务是判断,是否所有由前 $k$ 个小写英文字母组成的长度为 $n$ 的字符串,都在 $s$ 中作为子序列出现。如果答案为 NO,你还需要输出一个由前 $k$ 个小写英文字母组成且长度为 $n$ 的、没有在 $s$ 中作为子序列出现的字符串。 如果存在多个答案,你可以输出任意一个。 注意:如果字符串 $a$ 可以通过从字符串 $b$ 中删除若干(可能为零)个字符且不改变剩余字符的顺序得到,则称 $a$ 是 $b$ 的一个子序列。

输入格式

输入的第一行包含一个整数 $t\ (1 \le t \le 10^5)$,表示测试用例的数量。 每个测试用例的第一行包含三个整数 $n\ (1 \le n \le 26),\ k\ (1 \le k \le 26),\ m\ (1 \le m \le 1000)$,其中 $n$ 和 $k$ 如上所述,$m$ 表示字符串 $s$ 的长度。 每个测试用例的第二行包含一个长度为 $m$ 的字符串 $s$,仅由前 $k$ 个小写英文字母组成。 保证所有测试用例中 $m$ 的总和与 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,如果所有由前 $k$ 个小写英文字母组成的长度为 $n$ 的字符串都在 $s$ 中作为子序列出现,输出 YES。否则输出 NO,并在下一行输出一个没有在 $s$ 中作为子序列出现的、由前 $k$ 个小写英文字母组成且长度为 $n$ 的字符串。 YES 或 NO 的字母大小写不敏感(例如 YES、yES、YeS 都被认为是正确答案)。

说明/提示

对于第一个测试用例,所有由前 $2$ 个英文字母组成的长度为 $2$ 的字符串(aa、ab、ba、bb)都在 abba 中作为子序列出现。 对于第二个测试用例,字符串 aa 不是 abb 的子序列。 由 ChatGPT 4.1 翻译