QOJ.ac

QOJ

时间限制: 5 s 内存限制: 1024 MB 总分: 25

#12482. 字母块

统计

这是一个下雨天,你正在室内用字母积木搭建塔楼。字母积木是一个木制立方体,其中一个侧面印有字母。积木的字体使得它们具有明确的方向:即只有一个侧面可以朝下(指向地面),只有一个侧面可以朝上(指向天花板)。

到目前为止,你已经建造了多个独立的塔楼。现在,你想通过选择其中一个塔楼作为底座,然后拿起另一个塔楼(不改变其积木的顺序)并将其堆叠在上面,以此类推,直到所有塔楼都被用完,从而将它们合并成一个单一的“巨型塔楼”。

对于这个巨型塔楼,有一个额外的限制:对于任何两个具有相同字母的积木,它们之间的所有积木也必须具有该字母。也就是说,出现在巨型塔楼中的每个字母都需要出现在一个连续的组中(由一个或多个积木组成)。

例如,考虑以下三种可能的巨型塔楼。(这些是独立的示例,并非由相同的原始塔楼建成。另请注意,不同的积木大小仅为趣味性,并非问题的一部分。)

最左侧的两个巨型塔楼是有效的,因为每个字母都出现在一个连续的组中。然而,最右侧的巨型塔楼是无效的,因为在两个 C 之间有一个 B

给定你目前建造的塔楼,你能否将它们全部堆叠成一个有效的巨型塔楼?

输入格式

输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例由两行描述。第一行包含一个整数 $N$,表示当前已建造的塔楼数量。第二行包含 $N$ 个字符串 $S_1, S_2, \dots, S_N$,表示这些塔楼。每个字符串仅由大写字母组成。每个字符串的第 $i$ 个字母是所代表塔楼中从底部数起的第 $i$ 个积木上的字母。

输出格式

对于每个测试用例,输出一行,包含 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是表示如上所述的有效巨型塔楼的字符串,如果无法构建有效的巨型塔楼,则输出单词 IMPOSSIBLE。(注意,字符串 IMPOSSIBLE 本身永远无法代表一个有效的巨型塔楼,因为两个 I 之间有其他字母。)

数据范围

时间限制:5 秒。 内存限制:1 GB。 $1 \le T \le 100$。 $1 \le |S_i| \le 10$,对于所有 $i$。

子任务

测试集 1(可见判定) $2 \le N \le 6$。

测试集 2(可见判定) $2 \le N \le 100$。

样例

样例输入 1

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

样例输出 1

Case #1: ZZZZZJAMMICCODEEEL
Case #2: IMPOSSIBLE
Case #3: IMPOSSIBLE
Case #4: IMPOSSIBLE
Case #5: BBBBBAAAAA
Case #6: IMPOSSIBLE

说明

在样例 1 中,JAMMICCODEEELZZZZZZZZZZJAMMICCODEEEL 是仅有的两个有效输出。

在样例 2 中,回想一下所有塔楼都必须在巨型塔楼中使用,因此即使前五个塔楼加在一起可以形成一个有效的巨型塔楼(如样例 1 所示),额外的 EEK 也使得该情况变得不可能。无论 EELEEK 塔楼如何相对堆叠,至少会有两组不连续的 E

在样例 3 中,无论你如何堆叠塔楼,要么两个 O 不连续,要么两个 Y 不连续。

在样例 4 中,HASH 的两个 H 之间存在非 H 字母,因此这种情况也是不可能的。

在样例 5 中,此答案是唯一有效的。还要注意,塔楼不一定全部不同。

在样例 6 中,无论你如何堆叠塔楼,两个 A 都无法保持连续。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.