AT_abc018_3 [ABC018C] 菱型カウント

题目描述

有一个纵向 $R$ 行、横向 $C$ 列的矩形区域。从上往下第 $i$ 行($1 \leq i \leq R$)、从左往右第 $j$ 列($1 \leq j \leq C$)的格子称为格子 $(i, j)$。这些格子中有一些被涂成黑色,其他格子被涂成白色。 另外,给定一个整数 $K$。 现在,考虑进行如下操作,将一些格子涂成绿色。该操作只进行一次。 - 对于某一整数对 $x$($K \leq x \leq R-K+1$)、$y$($K \leq y \leq C-K+1$),对于所有满足 $|i-x|+|j-y| \leq K-1$ 的格子 $(i, j)$,如果该格子原本是白色,则在本次操作中被涂成绿色。对于所有满足 $|i-x|+|j-y| \geq K$ 的格子,则不会被涂成绿色。 问满足上述条件的绿色涂色方法有多少种。这里的“涂色方法”指的是哪些格子被涂成了哪种颜色的组合,不考虑涂色的顺序。

输入格式

输入以如下格式从标准输入读入。 > $R$ $C$ $K$ > $s_1$ > $s_2$ > $\vdots$ > $s_R$ - 第 $1$ 行包含三个整数 $R$($3 \leq R \leq 500$)、$C$($3 \leq C \leq 500$)、$K$($2 \leq K \leq 500$),表示矩形区域有 $R$ 行 $C$ 列,$K$ 是题目中给定的整数。 - 接下来的 $R$ 行,每行一个长度为 $C$ 的字符串 $s_i$。字符串 $s_i$ 仅由 `o` 和 `x` 两种字符组成,$s_i$ 的第 $j$ 个字符为 `o` 表示格子 $(i, j)$ 是白色,`x` 表示格子 $(i, j)$ 是黑色。

输出格式

请输出绿色涂色方法的总数,输出一行,末尾需换行。

说明/提示

## 部分分 本题设有部分分。 - 对于满足 $R \leq 50$ 且 $C \leq 50$ 的数据集 1,答对可获得 $30$ 分。 ## 样例解释 1 有如下 $3$ 种情况(`o` 表示白色格子,`x` 表示黑色格子,`\*` 表示绿色格子): x\*ooo \*\*\*oxo \*ooooxxoo xo\*ooo \*\*\*xoo \*oooxxoo xoooooo \*xoo\*\*\* oxx\*o 由 ChatGPT 4.1 翻译