QOJ.ac

QOJ

時間限制: 30 s 記憶體限制: 1024 MB 總分: 32

#12084. 网格构想

统计

大盗 Jom Codd 能够潜入他人的梦境。由于梦境观测技术尚不成熟,Codd 将梦境视为一个由单位格组成的“梦境网格”,每个格子要么是白色,要么是黑色。

给定一个初始的梦境网格,Codd 可以通过将每个白色格子替换为一个 $2 \times 2$ 的白色格子网格,并将每个黑色格子替换为一个 $2 \times 2$ 的黑色格子网格来“深入”梦境;这会产生一个大四倍的新梦境网格。他可以从该网格再次深入,以此类推。例如,给定以下初始梦境网格:

BBB
BWB
BBB

深入一次后产生的新梦境网格为:

BBBBBB
BBBBBB
BBWWBB
BBWWBB
BBBBBB
BBBBBB

再次深入后产生的新梦境网格为:

BBBBBBBBBBBB
BBBBBBBBBBBB
BBBBBBBBBBBB
BBBBBBBBBBBB
BBBBWWWWBBBB
BBBBWWWWBBBB
BBBBWWWWBBBB
BBBBWWWWBBBB
BBBBBBBBBBBB
BBBBBBBBBBBB
BBBBBBBBBBBB
BBBBBBBBBBBB

以此类推。

Codd 刚刚潜入一个梦境并观察到了它的初始梦境网格。他正在执行一项非常艰巨的任务,并且知道他需要多次深入梦境。为了辅助导航,他正在观察初始梦境网格中的各种“模式”。一个模式由一组通过共享边连接的格子(共享角不算连接)及其颜色组成。一个模式可能包含内部空隙(只要模式的格子是一个连通的整体);这些空隙不被视为模式的一部分。两个模式相同,当且仅当它们具有相同数量和排列的格子(不经过翻转或旋转),且颜色相同。

例如,在上述网格中,初始网格中存在以下 8 格模式:

BBB
B B
BBB

它在深入一次后不存在,但在深入两次、三次以及此后每一次更深的梦境网格中都存在。

Codd 想要从初始梦境网格中找到最大的模式,该模式在至少一古戈尔($10^{100}$)个更深的梦境网格中出现。对于给定的例子,上述模式是满足条件的最大模式。尽管它在深入一次后不存在,但它在至少一古戈尔个更深的层级中存在。其他较小的模式也满足此条件,但不存在 9 格的模式满足此条件;唯一可能的 9 格模式必须与整个初始梦境网格完全相同,而该模式永远不会出现在任何更深的梦境网格中,更不用说在一古戈尔个网格中出现了。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $R$ 和 $C$,分别表示梦境网格的行数和列数。每个测试用例接下来有 $R$ 行,每行包含 $C$ 个字符;每个字符要么是 B 要么是 W。这些行直接表示梦境网格。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是满足 Codd 上述要求且至少存在一个模式的最大可能大小。

数据范围

$1 \le T \le 100$。 时间限制:每个测试集 30 秒。 内存限制:1GB。

测试集 1(可见) $1 \le R \le 3$ $1 \le C \le 4$

测试集 2(隐藏) $1 \le R \le 20$ $1 \le C \le 20$

样例

输入 1

5
3 3
BBB
BWB
BBB
2 3
BBB
WBW
1 1
W
3 3
WBW
BWB
WBW
2 4
BBWW
BBWW

输出 1

Case #1: 8
Case #2: 5
Case #3: 1
Case #4: 4
Case #5: 8

说明

样例 #1 即为题目描述中的例子。

在样例 #2 中,一个可能的最大模式是:

BBB
WB

另一个同样大小的模式是:

BBB
W W

在样例 #3 中,整个初始梦境网格即为最大模式。

在样例 #4 中,注意五个 W 不构成一个有效的模式,因为它们不连通。然而,这是一个最大模式:

WB
BW

在样例 #5 中,整个初始梦境网格即为最大模式。注意,尽管该网格恰好是 Codd 从 BW 开始深入后得到的网格,但这无关紧要;Codd 永远不会“变浅”。

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.