#ATarc157f. [ARC157F] XY Ladder LCS
[ARC157F] XY Ladder LCS
题目描述
给定两个由 X 和 Y 组成、长度为 的字符串 和 。对于每个 ,你可以自由选择是否交换 和 的第 个字符。这样一来,最终可以得到 种不同的字符串对。请你求出这些字符串对的所有公共子序列(不要求连续)中最长的一个。如果有多个长度相同的公共子序列,请输出其中字典序最小的那个。
公共子序列的定义如下:字符串 的子序列是指从 中删除 个或多个字符后,按原顺序排列剩下的字符所得到的字符串。字符串 和 的公共子序列是指既是 的子序列又是 的子序列的字符串。(也可以参考样例 1 的说明。)
输入格式
输入通过标准输入按以下格式给出。
输出格式
请输出在所有可能的交换操作后得到的字符串对的公共子序列中,最长且字典序最小的字符串。
样例 1
输入
3
XXX
YYY
输出
XY
样例 2
输入
1
X
Y
输出
样例 3
输入
4
XXYX
YYYY
输出
XYY
说明/提示
限制条件
- 和 均为由
X和Y组成的长度为 的字符串。
样例解释 1
- 如果不交换任何字符,
XXX和YYY的公共子序列只有空字符串。 - 如果只交换第 1 个字符,
YXX和XYY的公共子序列有:空字符串、X、Y。 - 如果只交换第 2 个字符,
XYX和YXY的公共子序列有:空字符串、X、Y、XY、YX。 - 如果只交换第 3 个字符,
XXY和YYX的公共子序列有:空字符串、X、Y。 - 交换 2 个或更多字符的情况,可以通过交换 和 本身来等价地考虑上述情况。
- 因此,可能的最长公共子序列为
XY和YX,其中字典序最小的是XY,所以答案为XY。
样例解释 2
答案也可能是空字符串。
样例解释 3
例如,如果只交换第 2 个字符,可以得到 XYY 作为公共子序列。不存在更长的公共子序列,也不存在长度相同且字典序更小的公共子序列,因此答案为 XYY。
由 ChatGPT 4.1 翻译