P17664 [IO 2025 #3] 剃须难题

题目描述

戈麦斯·亚当斯十分珍爱自己的胡须,但胡须也需要打理。因此,每天早晨他都会拿起剃须刀,刮去胡茬,并修整胡须。 戈麦斯的脸可以表示成一个 $n\times m$ 的矩阵,每个格子代表脸上的一块区域。用字符 `+` 表示戈麦斯想要剃掉胡须的区域,用字符 `#` 表示他不想剃的区域,用字符 `.` 表示他不在意是否剃须的区域。他有一把宽度为 $k$ 的剃须刀,可以将它旋转 $90$ 度。不过,仅仅把剃须刀贴在脸上并不能剃须,必须沿刀刃的方向移动它。因此,他一次可以剃掉一个大小为 $k\times l$ 或 $l\times k$ 的矩形区域,其中 $l>1$。注意,剃须刀不能超出矩阵的边界。 戈麦斯·亚当斯想知道,能否使用这把剃须刀剃掉脸上所有需要剃须的区域,同时不剃任何他不想剃的区域,否则他又要因为自己的胡须状态而不开心了。

输入格式

第一行包含三个整数 $n,m,k$,分别表示戈麦斯脸部矩阵的大小和剃须刀的宽度,满足 $1\le n,m,k\le 10^5$,$1\le n\times m\le 101\,000$。 接下来 $n$ 行,每行包含 $m$ 个字符,字符均为 `+`、`#` 或 `.`,描述戈麦斯脸上的情况。

输出格式

如果戈麦斯能够剃掉所有需要剃须的区域,输出 `YES`;否则输出 `NO`。