AT_arc157_f.[ARC157F] XY Ladder LCS

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

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

输入格式

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

NN SS TT

输出格式

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

输入输出样例

  • 输入#1

    3
    XXX
    YYY

    输出#1

    XY
  • 输入#2

    1
    X
    Y

    输出#2

  • 输入#3

    4
    XXYX
    YYYY

    输出#3

    XYY

说明/提示

限制条件

  • 1≤N≤501 \leq N \leq 50
  • SS 和 TT 均为由 X 和 Y 组成的长度为 NN 的字符串。

样例解释 1

  • 如果不交换任何字符,XXX 和 YYY 的公共子序列只有空字符串。
  • 如果只交换第 1 个字符,YXX 和 XYY 的公共子序列有:空字符串、X、Y。
  • 如果只交换第 2 个字符,XYX 和 YXY 的公共子序列有:空字符串、X、Y、XY、YX。
  • 如果只交换第 3 个字符,XXY 和 YYX 的公共子序列有:空字符串、X、Y。
  • 交换 2 个或更多字符的情况,可以通过交换 SS 和 TT 本身来等价地考虑上述情况。
  • 因此,可能的最长公共子序列为 XY 和 YX,其中字典序最小的是 XY,所以答案为 XY。

样例解释 2

答案也可能是空字符串。

样例解释 3

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

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页