CF2068F Mascot Naming
题目描述
在筹办大型活动时,组织者常需处理专业领域外的琐事。例如,EUC 2025 的主裁判需要为官方吉祥物命名,并满足以下条件:
- 名称必须包含特定单词作为子序列$^{\texttt{*}}$,例如活动名称和举办地。给定必须包含的 $n$ 个单词列表 $s_1, s_2, \ldots, s_n$。
- 名称不得包含去年吉祥物名称 $t$ 作为子序列$^{\texttt{*}}$。
请帮助主裁判找到有效的吉祥物名称,或判定其不存在。
$^{\texttt{*}}$ 若字符串 $x$ 可通过删除字符串 $y$ 中若干字符(不改变剩余字符顺序)得到,则称 $x$ 是 $y$ 的子序列。例如,$\texttt{abc}$ 是 $\texttt{axbycz}$ 的子序列,但不是 $\texttt{acbxyz}$ 的子序列。
输入格式
第一行包含整数 $n$($1 \le n \le 200\,000$)——必须作为子序列出现的单词数量。
接下来 $n$ 行中,第 $i$ 行包含字符串 $s_i$($1 \le |s_i| \le 200\,000$,仅含小写字母)——必须作为子序列出现的第 $i$ 个单词。所有 $s_i$ 的总长度不超过 $200\,000$,即 $|s_1| + |s_2| + \cdots + |s_n| \le 200\,000$。
最后一行包含字符串 $t$($1 \le |t| \le 200\,000$,仅含小写字母)——去年吉祥物的名称。
输出格式
若存在有效名称,输出 $\texttt{YES}$,否则输出 $\texttt{NO}$。
若存在有效名称,在第二行输出一个有效名称。输出的字符串长度不得超过 $1\,000\,000$ 且仅含小写字母。可以证明,若存在有效名称,则必存在满足此额外约束的解。
若有多个解,输出任意一个即可。
说明/提示
第一个样例中,必须作为子序列的单词是 $\texttt{porto}$ 和 $\texttt{euc}$,而禁止作为子序列的单词是 $\texttt{prague}$。存在多个有效名称,例如 $\texttt{poretuco}$ 或 $\texttt{xxxpppeortoucyyyy}$。
若选择 $\texttt{poretuco}$ 作为名称,可验证 $\texttt{porto}$ 和 $\texttt{euc}$ 是其子序列(例如高亮显示为 $\texttt{POReTucO}$ 和 $\texttt{porEtUCo}$),而 $\texttt{prague}$ 不是。
字符串 $\texttt{poretuc}$ 无效,因其不包含 $\texttt{porto}$ 作为子序列。字符串 $\texttt{poretucoague}$ 也无效,因其包含 $\texttt{prague}$ 作为子序列。
翻译由 DeepSeek R1 完成