33OJ
登录 注册

#P17664. [IO 2025 #3] 剃须难题

[IO 2025 #3] 剃须难题

题目描述

戈麦斯·亚当斯十分珍爱自己的胡须,但胡须也需要打理。因此,每天早晨他都会拿起剃须刀,刮去胡茬,并修整胡须。

戈麦斯的脸可以表示成一个 n×mn\times m 的矩阵,每个格子代表脸上的一块区域。用字符 + 表示戈麦斯想要剃掉胡须的区域,用字符 # 表示他不想剃的区域,用字符 . 表示他不在意是否剃须的区域。他有一把宽度为 kk 的剃须刀,可以将它旋转 9090 度。不过,仅仅把剃须刀贴在脸上并不能剃须,必须沿刀刃的方向移动它。因此,他一次可以剃掉一个大小为 k×lk\times l 或 l×kl\times k 的矩形区域,其中 l>1l>1。注意,剃须刀不能超出矩阵的边界。

戈麦斯·亚当斯想知道,能否使用这把剃须刀剃掉脸上所有需要剃须的区域,同时不剃任何他不想剃的区域,否则他又要因为自己的胡须状态而不开心了。

输入格式

第一行包含三个整数 n,m,kn,m,k,分别表示戈麦斯脸部矩阵的大小和剃须刀的宽度,满足 1≤n,m,k≤1051\le n,m,k\le 10^5,1≤n×m≤101 0001\le n\times m\le 101\,000。

接下来 nn 行,每行包含 mm 个字符,字符均为 +、# 或 .,描述戈麦斯脸上的情况。

输出格式

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

9 10 3
##########
###....###
..........
..##..##..
+........+
++.++++.++
+++####+++
++++++++++
++++++++++
YES
9 10 3
##########
###....###
..++..++..
..##..##..
+........+
++.++++.++
+++####+++
++++++++++
++++++++++
NO