AT_abc322_d [ABC322D] Polyomino

题目描述

将若干个正方形通过边相连形成的连通多边形形状的拼图块称为 **多连方块(ポリオミノ)**。 现在有一个 $4$ 行 $4$ 列的网格,以及 $3$ 个可以放入该网格的多连方块。 第 $i$ 个多连方块的形状由 $16$ 个字符 $P_{i,j,k}$($1 \leq j, k \leq 4$)表示。$P_{i,j,k}$ 表示将第 $i$ 个多连方块放在一个空网格上的状态,若 $P_{i,j,k}$ 为 `#`,则表示该多连方块覆盖了从上到下第 $j$ 行、从左到右第 $k$ 列的格子;若为 `.`,则表示未覆盖。请参考输入输出样例 $1$ 的图示。 你需要将这 $3$ 个多连方块全部铺在网格上,并满足以下所有条件: - 网格的所有格子都被多连方块覆盖。 - 多连方块之间不能重叠。 - 多连方块不能超出网格边界。 - 多连方块可以任意平移和旋转,但不能翻转。 请判断是否存在一种方式,使得可以将这 $3$ 个多连方块铺满整个网格,并满足上述条件。

输入格式

输入通过标准输入给出,格式如下: > $P_{1,1,1}P_{1,1,2}P_{1,1,3}P_{1,1,4}$ > $P_{1,2,1}P_{1,2,2}P_{1,2,3}P_{1,2,4}$ > $P_{1,3,1}P_{1,3,2}P_{1,3,3}P_{1,3,4}$ > $P_{1,4,1}P_{1,4,2}P_{1,4,3}P_{1,4,4}$ > $P_{2,1,1}P_{2,1,2}P_{2,1,3}P_{2,1,4}$ > $P_{2,2,1}P_{2,2,2}P_{2,2,3}P_{2,2,4}$ > $P_{2,3,1}P_{2,3,2}P_{2,3,3}P_{2,3,4}$ > $P_{2,4,1}P_{2,4,2}P_{2,4,3}P_{2,4,4}$ > $P_{3,1,1}P_{3,1,2}P_{3,1,3}P_{3,1,4}$ > $P_{3,2,1}P_{3,2,2}P_{3,2,3}P_{3,2,4}$ > $P_{3,3,1}P_{3,3,2}P_{3,3,3}P_{3,3,4}$ > $P_{3,4,1}P_{3,4,2}P_{3,4,3}P_{3,4,4}$

输出格式

如果存在一种方式可以满足题目要求,将多连方块铺满网格,则输出 `Yes`;否则输出 `No`。

说明/提示

### 限制条件 - $P_{i,j,k}$ 只会是 `#` 或 `.`。 - 给定的多连方块都是连通的。即,多连方块由正方形组成,这些正方形之间可以通过上下左右方向互相到达。 - 给定的多连方块不会是空的。 ### 样例解释 1 与输入样例 $1$ 对应的多连方块形状如下图所示。 ![image1](https://img.atcoder.jp/abc322/f0e25c2abcdbeade76fcb12eaee39f23.jpg) 在这种情况下,可以如下图所示地放置多连方块,使其满足题目要求。 ![image2](https://img.atcoder.jp/abc322/81e983f85e958e0d612063adcc455c71.jpg) 因此答案为 `Yes`。 ### 样例解释 2 在输入样例 $2$ 中,第 $1$ 个多连方块的形状可能是带有空洞的多边形。 ### 样例解释 3 请注意,铺放多连方块时,不能将其翻转。 由 ChatGPT 4.1 翻译