P13371 [GCJ 2011 #1C] Square Tiles

题目描述

你正在出售美丽的几何画作。每幅画由 $1\times 1$ 的方块瓷砖组成,排列成不重叠的网格。例如: ``` .##.. .#### .#### .##.. ``` 蓝色瓷砖用字符 '#' 表示,白色瓷砖用字符 '.' 表示。你不会使用其他颜色。 但并不是每个人都喜欢蓝色,有些顾客希望你把画中的所有蓝色瓷砖都换成红色瓷砖。不幸的是,红色瓷砖只能是更大的 $2\times 2$ 尺寸,这让事情变得棘手。 你可以用一块红色瓷砖覆盖任意一个 $2\times 2$ 的蓝色瓷砖区域,然后重复此操作直到完成。红色瓷砖不能重叠,不能覆盖白色瓷砖,也不能超出画作边界。例如,你可以如下方式在上面的画作中添加红色瓷砖: ``` ./\.. .\//\ ./\\/ .\/.. ``` 每块红色瓷砖用左上和右下角的 '/' 字符,以及另外两个角的 '\\' 字符表示。 给定一幅蓝白画作,你能否用这种方式将其转换为红白画作?

输入格式

输入的第一行给出测试用例数 $T$。接下来有 $T$ 组测试用例。 每组测试用例的第一行包含两个整数 $R$ 和 $C$,表示画作的行数和列数。接下来的 $R$ 行,每行包含恰好 $C$ 个字符,描述画作。'#' 表示蓝色瓷砖,'.' 表示白色瓷砖。

输出格式

对于每组测试用例,首先输出一行 "Case #$x$: ",其中 $x$ 是测试用例编号(从 1 开始)。 如果可以用不重叠的红色瓷砖覆盖所有蓝色瓷砖,输出 $R$ 行,每行 $C$ 个字符,描述最终的红白画作。红色瓷砖用 '/' 和 '\\' 字符表示,白色瓷砖用 '.' 表示。如果有多种方案,可以输出任意一种。 如果无法完成任务,输出一行 "Impossible"。

说明/提示

**数据范围** **小数据集(10 分,测试集 1 - 可见)** - $1 \leq T \leq 20$。 - $1 \leq R \leq 6$。 - $1 \leq C \leq 6$。 - 时间限制:~~30~~ 3 秒。 **大数据集(10 分,测试集 2 - 隐藏)** - $1 \leq T \leq 50$。 - $1 \leq R \leq 50$。 - $1 \leq C \leq 50$。 - 时间限制:~~60~~ 6 秒。 由 ChatGPT 4.1 翻译