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 翻译