#P12990. [GCJ 2022 #1C] Letter Blocks
[GCJ 2022 #1C] Letter Blocks
Description
这是一个雨天,所以你待在室内搭建字母积木塔。一个字母积木是一个木制立方体,其一面印有一个字母。使用的字体使积木具有明确的方向性:即只有一个面可以朝下(朝向地板),一个面可以朝上(朝向天花板)。
目前你已经搭建了多个独立的塔。现在你想将它们全部组合成一个超级塔:选择其中一座塔作为基底,然后拿起另一座塔(不改变其积木顺序)将其整体堆叠在基底上,以此类推,直到所有塔都被使用。
超级塔还有一个额外限制:对于任意两个相同字母的积木,它们之间的所有积木也必须是该字母。也就是说,字母表中每个出现在超级塔中的字母必须出现在一个连续的组中(一个或多个积木)。
例如,以下是三个可能的超级塔(这些是独立的示例,并非由相同的原始塔构建而成。另外请注意,积木的不同大小仅为趣味性,不属于题目的一部分)。

最左侧的两个超级塔是合法的,因为每个字母都出现在一个连续的组中。但最右侧的超级塔不合法,因为两个 C 之间有一个 B。
给定你目前已搭建的塔,能否将它们全部堆叠成一个合法的超级塔?
Input Format
输入的第一行包含测试用例的数量 。接下来是 个测试用例。每个测试用例由两行描述。第一行是一个整数 ,表示当前搭建的塔的数量。第二行包含 个字符串 $\mathbf{S}_{1}, \mathbf{S}_{2}, \ldots, \mathbf{S}_{\mathbf{N}}$,表示这些塔。每个字符串仅由大写字母组成。每个字符串的第 个字母表示对应塔中从底部数第 个积木的字母。
Output Format
对于每个测试用例,输出一行 Case #x: y,其中 是测试用例编号(从 1 开始), 是表示合法超级塔的字符串,或者如果无法构建合法超级塔,则输出单词 IMPOSSIBLE。(注意,字符串 IMPOSSIBLE 本身永远不可能表示合法的超级塔,因为两个 i 之间有其他字母。)
6
5
CODE JAM MIC EEL ZZZZZ
6
CODE JAM MIC EEL ZZZZZ EEK
2
OY YO
2
HASH CODE
6
A AA BB A BA BB
2
CAT TAX
Case #1: ZZZZZJAMMICCODEEEL
Case #2: IMPOSSIBLE
Case #3: IMPOSSIBLE
Case #4: IMPOSSIBLE
Case #5: BBBBBAAAAA
Case #6: IMPOSSIBLE
Hint
样例解释 1
在样例 #1 中,JAMMICCODEEELZZZZZ 和 ZZZZZJAMMICCODEEEL 是仅有的两种合法输出。
在样例 #2 中,请注意所有塔都必须用于超级塔,因此即使前五座塔可以组成一个合法超级塔(如样例 #1),额外的 EEK 使得该用例无法实现。无论 EEL 和 EEK 塔如何堆叠,至少会有两组不连续的 E。
在样例 #3 中,无论怎样堆叠塔,要么两个 O 不连续,要么两个 Y 不连续。
在样例 #4 中,HASH 的 H 之间有非 H 字母,因此该用例也无法实现。
在样例 #5 中,这是唯一的合法答案。另外请注意,塔不一定是完全不同的。
在样例 #6 中,无论怎样堆叠塔,两个 A 都无法连续。
数据范围
- 。
- 对于所有 ,$1 \leq \text{字符串 } \mathbf{S}_i \text{ 的长度} \leq 10$。
测试集 1(10 分,可见判定)
- 。
测试集 2(15 分,可见判定)
- 。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号