luogu#P16455. [UOI 2026] Unique Letters

[UOI 2026] Unique Letters

题目描述

给定两个由小写拉丁字母组成的字符串 sstt

你可以任意排列字符串 ss 中的字符,也可以任意排列字符串 tt 中的字符。

我们定义字符串 xx唯一化 过程如下:首先,令辅助字符串 aa 为空。然后从左到右依次处理字符串 xx 中的字符。设当前字符为 cc

  • 若字符 cc 未在当前字符串 aa 中出现,则将该字符 cc 追加到 aa 的末尾。
  • 若字符 cc 已经在当前字符串 aa 中出现过,则将 aa 中从开头到第一次出现 cc 为止(包含该 cc)的后缀从 aa 中删除。此时,当前正在处理的字符 cc 不会被加入。

将处理完所有字符后得到的字符串 aa 称为该字符串的 唯一化 结果。

请你判断是否能够通过排列得到字符串 ss'tt',使得:

  • ss' 是字符串 ss 中字符的一个排列;
  • tt' 是字符串 tt 中字符的一个排列;
  • 字符串 ss'唯一化 结果等于 tt'

输入格式

第一行包含字符串 ss (1s2105)(1 \le |s| \le 2 \cdot 10^5)

第二行包含字符串 tt (1t2105)(1 \le |t| \le 2 \cdot 10^5)

两个字符串均仅由小写拉丁字母组成。

输出格式

若无法得到满足要求的字符串 ss'tt',输出 NO

否则,输出 YES。接下来输出两行,分别为字符串 ss'tt',满足:

  • ss' 是字符串 ss 中字符的一个排列;
  • tt' 是字符串 tt 中字符的一个排列;
  • 字符串 ss'唯一化 结果等于 tt'
bbcdfe
fe
YES
bcdbef
ef
bbfcbbd
f
YES
bcdbfbb
f
cgbfedc
gfbc
NO

提示

对于第一个样例:

我们将字符串 ss 排列为 bcdbef,将字符串 tt 排列为 ef

构造字符串 aa 的过程如下:

  • 处理字符 b 后,a=ba = \texttt{b}
  • 处理字符 c 后,a=bca = \texttt{bc}
  • 处理字符 d 后,a=bcda = \texttt{bcd}
  • 处理字符 b 时,字母 b 已在 aa 中存在,因此我们将 aa 中到第一次出现 b 为止的后缀删除。随后,aa 变为空字符串;
  • 处理字符 e 后,a=ea = \texttt{e}
  • 处理字符 f 后,a=efa = \texttt{ef}

在第四步中,字母 cd 也一同从 aa 中被移除,而不仅仅是字母 b

最终得到的字符串 aa 等于排列后的字符串 tt,因此存在答案。

对于第二个样例:

我们将字符串 ss 排列为 bcdbfbb,并保持字符串 ttf

构造字符串 aa 的过程如下:

  • 处理字符 b 后,a=ba = \texttt{b}
  • 处理字符 c 后,a=bca = \texttt{bc}
  • 处理字符 d 后,a=bcda = \texttt{bcd}
  • 处理字符 b 时,字母 b 已在 aa 中存在,因此我们将 aa 中到第一次出现 b 为止的后缀删除。随后,aa 变为空字符串;
  • 处理字符 f 后,a=fa = \texttt{f}
  • 处理字符 b 后,a=fba = \texttt{fb}
  • 处理字符 b 时,字母 b 已在 aa 中存在,因此我们将 aa 中到第一次出现 b 为止的后缀删除。随后,a=fa = \texttt{f}

在第四步中,字母 cd 也一同从 aa 中被移除,而不仅仅是字母 b

最终得到的字符串 aa 等于排列后的字符串 tt,因此存在答案。

在第三个样例中,可以证明:对于字符串 cgbfedc 的任何排列,其 唯一化 结果都不可能是字符串 gfbc 的排列。

计分

  • 44 分):s=t=1|s|=|t|=1
  • 88 分):ss 可以通过排列字母得到 tt
  • 88 分):ss 中所有字母互不相同;
  • 1212 分):字符串 ss 中仅有一个字母出现次数超过 11
  • 2424 分):s=aaaaabbbbbcccccddddds=\texttt{aaaaabbbbbcccccddddd}
  • 1616 分):s8|s| \le 8
  • 2828 分):无额外限制。

翻译由 DeepSeek V4 Pro 完成