CF1059B Forgery

题目描述

学生 Andrey 整个学期都在逃避体育课,现在他必须想办法在这门课上及格。显然,合法手段已经无法实现,但 Andrey 并不放弃。他从当地医院弄到了一张空白证明,打算利用自己对本地医生笔迹的了解伪造一份病假条。然而,在写完大部分证明后,Andrey 突然发现医生的签名根本无法伪造。真的是这样吗? 为简化问题,签名被表示为一个 $n \times m$ 的网格,每个格子要么被墨水填满,要么为空。Andrey 的钢笔可以在网格内完全包含的情况下,填充一个 $3 \times 3$ 的正方形边框(不包括中心格),如下所示: ``` xxx x.x xxx ``` 请判断,Andrey 是否可以在一个空的 $n \times m$ 网格上伪造出目标签名。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$($3 \leq n, m \leq 1000$)。 接下来有 $n$ 行,每行包含 $m$ 个字符。每个字符为 '.',表示空格,或 '#',表示被墨水填满的格子。

输出格式

如果 Andrey 能够伪造出签名,输出 "YES"。否则输出 "NO"。 你可以用大写或小写字母输出答案。

说明/提示

在第一个样例中,Andrey 可以在以 $(2, 2)$ 为中心的正方形边框处涂色。 在第二个样例中,签名无法被伪造。 在第三个样例中,Andrey 可以在以 $(2, 2)$ 和 $(3, 2)$ 为中心的正方形边框处涂色: 1. 初始纸张如下: ``` ... ... ... ... ``` 2. 以 $(2, 2)$ 为中心使用钢笔: ``` ### #.# ### ... ``` 3. 以 $(3, 2)$ 为中心再次使用钢笔: ``` ### ### ### ### ``` 在第四个样例中,Andrey 可以在以 $(3, 3)$ 和 $(3, 5)$ 为中心的正方形边框处涂色。 由 ChatGPT 4.1 翻译