#ATarc157f. [ARC157F] XY Ladder LCS

[ARC157F] XY Ladder LCS

题目描述

给定两个由 XY 组成、长度为 NN 的字符串 SSTT。对于每个 i=1,2,,Ni=1,2,\dots,N,你可以自由选择是否交换 SSTT 的第 ii 个字符。这样一来,最终可以得到 2N2^N 种不同的字符串对。请你求出这些字符串对的所有公共子序列(不要求连续)中最长的一个。如果有多个长度相同的公共子序列,请输出其中字典序最小的那个。

公共子序列的定义如下:字符串 SS子序列是指从 SS 中删除 00 个或多个字符后,按原顺序排列剩下的字符所得到的字符串。字符串 SSTT公共子序列是指既是 SS 的子序列又是 TT 的子序列的字符串。(也可以参考样例 1 的说明。)

输入格式

输入通过标准输入按以下格式给出。

NN SS TT

输出格式

请输出在所有可能的交换操作后得到的字符串对的公共子序列中,最长且字典序最小的字符串。

样例 1

输入

3
XXX
YYY

输出

XY

样例 2

输入

1
X
Y

输出


样例 3

输入

4
XXYX
YYYY

输出

XYY

说明/提示

限制条件

  • 1N501 \leq N \leq 50
  • SSTT 均为由 XY 组成的长度为 NN 的字符串。

样例解释 1

  • 如果不交换任何字符,XXXYYY 的公共子序列只有空字符串。
  • 如果只交换第 1 个字符,YXXXYY 的公共子序列有:空字符串、XY
  • 如果只交换第 2 个字符,XYXYXY 的公共子序列有:空字符串、XYXYYX
  • 如果只交换第 3 个字符,XXYYYX 的公共子序列有:空字符串、XY
  • 交换 2 个或更多字符的情况,可以通过交换 SSTT 本身来等价地考虑上述情况。
  • 因此,可能的最长公共子序列为 XYYX,其中字典序最小的是 XY,所以答案为 XY

样例解释 2

答案也可能是空字符串。

样例解释 3

例如,如果只交换第 2 个字符,可以得到 XYY 作为公共子序列。不存在更长的公共子序列,也不存在长度相同且字典序更小的公共子序列,因此答案为 XYY

由 ChatGPT 4.1 翻译