#P9694. [GDCPC 2023] New but Nostalgic Problem
[GDCPC 2023] New but Nostalgic Problem
Description
给定 个字符串 ,请选出恰好 个字符串,最小化字符串 的字典序,并输出这个最优的字符串 。其中 满足以下条件: 是被选出的字符串中,某两个编号不同的字符串的最长公共前缀。而且, 是所有满足条件的字符串中,字典序最大的字符串。
更正式地,令 表示一个大小为 的集合,集合中的元素均为从 到 的整数(含两端),且没有重复的元素。令 表示字符串 和 的最长公共前缀,您需要找到一个集合 以最小化下述字符串 的字典序,并输出这个最优的字符串 。
$$v = \max\limits_{i \in \mathbb{S}, j \in \mathbb{S}, i \ne j} \text{lcp}(w_i, w_j)$$上式中的 通过字典序比较两个字符串。
请回忆:
- 称字符串 是字符串 的前缀,若可以在 的末尾添加若干个字符(包括零个字符)将它变成 。特别地,空字符串是任意字符串的前缀。
- 字符串 和 的最长公共前缀是一个最长的字符串 ,满足 既是 的前缀,又是 的前缀。例如,
abcde与abcef的最长公共前缀为abc,而abcde与bcdef的最长公共前缀为空字符串。 - 称字符串 的字典序小于字符串 (),若
- 是 的前缀,或
- ,其中 为 和 的最长公共前缀, 为 的长度, 表示字符串 的第 个字符, 表示字符串 的第 个字符。
- 特别地,空字符串是字典序最小的字符串。
Input Format
有多组测试数据。第一行输入一个整数 表示测试数据组数。对于每组测试数据:
第一行输入两个整数 和 (,),表示字符串的总数和需要选择的字符串的数量。
对于接下来 行,第 行输入一个由小写字母构成的字符串 ()。
保证所有数据中字符串长度之和不超过 。
Output Format
每组数据输出一行一个字符串表示答案。特别地,若答案为空字符串,输出 。
2
5 3
gdcpc
gdcpcpcp
suasua
suas
sususua
3 3
a
b
c
gdcpc
EMPTY
京公网安备 11011102002149号