luogu#P16455. [UOI 2026] Unique Letters
[UOI 2026] Unique Letters
题目描述
给定两个由小写拉丁字母组成的字符串 和 。
你可以任意排列字符串 中的字符,也可以任意排列字符串 中的字符。
我们定义字符串 的 唯一化 过程如下:首先,令辅助字符串 为空。然后从左到右依次处理字符串 中的字符。设当前字符为 。
- 若字符 未在当前字符串 中出现,则将该字符 追加到 的末尾。
- 若字符 已经在当前字符串 中出现过,则将 中从开头到第一次出现 为止(包含该 )的后缀从 中删除。此时,当前正在处理的字符 不会被加入。
将处理完所有字符后得到的字符串 称为该字符串的 唯一化 结果。
请你判断是否能够通过排列得到字符串 与 ,使得:
- 是字符串 中字符的一个排列;
- 是字符串 中字符的一个排列;
- 字符串 的 唯一化 结果等于 。
输入格式
第一行包含字符串 。
第二行包含字符串 。
两个字符串均仅由小写拉丁字母组成。
输出格式
若无法得到满足要求的字符串 与 ,输出 NO。
否则,输出 YES。接下来输出两行,分别为字符串 与 ,满足:
- 是字符串 中字符的一个排列;
- 是字符串 中字符的一个排列;
- 字符串 的 唯一化 结果等于 。
bbcdfe
fe
YES
bcdbef
ef
bbfcbbd
f
YES
bcdbfbb
f
cgbfedc
gfbc
NO
提示
对于第一个样例:
我们将字符串 排列为 bcdbef,将字符串 排列为 ef。
构造字符串 的过程如下:
- 处理字符
b后,; - 处理字符
c后,; - 处理字符
d后,; - 处理字符
b时,字母b已在 中存在,因此我们将 中到第一次出现b为止的后缀删除。随后, 变为空字符串; - 处理字符
e后,; - 处理字符
f后,。
在第四步中,字母 c 和 d 也一同从 中被移除,而不仅仅是字母 b。
最终得到的字符串 等于排列后的字符串 ,因此存在答案。
对于第二个样例:
我们将字符串 排列为 bcdbfbb,并保持字符串 为 f。
构造字符串 的过程如下:
- 处理字符
b后,; - 处理字符
c后,; - 处理字符
d后,; - 处理字符
b时,字母b已在 中存在,因此我们将 中到第一次出现b为止的后缀删除。随后, 变为空字符串; - 处理字符
f后,; - 处理字符
b后,; - 处理字符
b时,字母b已在 中存在,因此我们将 中到第一次出现b为止的后缀删除。随后,。
在第四步中,字母 c 和 d 也一同从 中被移除,而不仅仅是字母 b。
最终得到的字符串 等于排列后的字符串 ,因此存在答案。
在第三个样例中,可以证明:对于字符串 cgbfedc 的任何排列,其 唯一化 结果都不可能是字符串 gfbc 的排列。
计分
- ( 分):;
- ( 分): 可以通过排列字母得到 ;
- ( 分): 中所有字母互不相同;
- ( 分):字符串 中仅有一个字母出现次数超过 ;
- ( 分):;
- ( 分):;
- ( 分):无额外限制。
翻译由 DeepSeek V4 Pro 完成