#ABC337D. 作弊的五子棋

作弊的五子棋

作弊的五子棋

题目描述

有一个 HHWW 列的网格。令 (i,j)(i,j) 表示从上数第 ii 行、从左数第 jj 列的格子。

每个格子都写着字符 o、x、. 中的某一个。各格子中写着的字符由 HH 个长度为 WW 的字符串 S1,S2,,SHS_1, S_2, \ldots, S_H 表示;格子 (i,j)(i,j) 中写着的字符是字符串 SiS_i 的第 jj 个字符。

对于这个网格,你可以任意次数(可以为 0 次)重复以下操作:

  • 选择写有字符 . 的一个格子,将该格子中的字符改成 o。

请判断是否有可能使横向或纵向连续的 KK 个格子全部写有 o(即是否满足以下两个条件中的至少一个)。如果可能,输出达到该状态所需的最少操作次数。

  • 存在满足 1iH1 \le i \le H1jWK+11 \le j \le W-K+1 的整数对 (i,j)(i,j),使得格子 (i,j),(i,j+1),,(i,j+K1)(i,j), (i,j+1), \ldots, (i,j+K-1) 中的字符全部是 o。
  • 存在满足 1iHK+11 \le i \le H-K+11jW1 \le j \le W 的整数对 (i,j)(i,j),使得格子 (i,j),(i+1,j),,(i+K1,j)(i,j), (i+1,j), \ldots, (i+K-1,j) 中的字符全部是 o。

输入格式

输入按以下格式从标准输入给出:

HH WW KK
S1S_1
S2S_2
\vdots
SHS_H

输出格式

如果无法满足题目条件,输出 -1。否则,输出满足条件所需的最少操作次数。

样例

3 4 3
xo.x
..o.
xx.o
2

例如,执行两次操作,将格子 (2,1)(2,1)(2,2)(2,2) 中的字符改成 o,即可满足题目条件,并且这是所需的最少操作次数。

4 2 3
.o
.o
.o
.o
0

不进行任何操作就已经满足条件。

3 3 3
x..
..x
.x.
-1

无法满足条件,因此输出 -1。

10 12 6
......xo.o..
x...x.....o.
x...........
..o...x.....
.....oo.....
o.........x.
ox.oox.xx..x
....o...oox.
..o.....x.x.
...o........
3

数据范围

  • H,W,KH, W, K 是整数。
  • 1H1 \le H
  • 1W1 \le W
  • H×W2×105H \times W \le 2 \times 10^5
  • 1Kmax{H,W}1 \le K \le \max\{H, W\}
  • SiS_i 是由 o、x、. 组成的长度为 WW 的字符串。
难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
3182
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签