AT_bitflyer2018_qual_d ハンコ

题目描述

有一张 $H$ 行 $W$ 列的网格纸,每个格子用坐标 $(i, j)$ 表示,其中 $1 \leq i \leq H$ 且 $1 \leq j \leq W$。 同时,有一个大小为 $N$ 行 $M$ 列的印章,其图案用 $N$ 个长度为 $M$ 的字符串 $A_1, A_2, \ldots, A_N$ 来描述。如果将印章的左上角对准坐标为 $(s, t)$ 的格子($1 \leq s \leq H - N + 1$ 且 $1 \leq t \leq W - M + 1$),对印章覆盖的所有格子执行如下操作: - 如果 $A_i$ 的第 $j$ 个字符是 `#`,则印章覆盖的相应格子 $(s + i - 1, t + j - 1)$ 会变为黑色。 - 如果 $A_i$ 的第 $j$ 个字符是 `.`,格子 $(s + i - 1, t + j - 1)$ 的颜色保持不变。 初始时,所有格子都是白色的。我们需要对每一对符合条件的 $(s, t)$ 都进行盖印操作。 请计算最终变黑的格子的总数量。

输入格式

输入通过标准输入以如下格式给出: > $H$ $W$ $N$ $M$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

输出一个整数,表示变黑的格子数。

说明/提示

- $1 \leq H, W \leq 10^9$ - $1 \leq N, M \leq 1000$ - $N \leq H$ - $M \leq W$ - 每个 $A_i$ 的长度都为 $M$ 且由 `#` 和 `.` 组成 ### 示例说明 #### 示例 1 印章将分别对准 $(1, 1)$、$(1, 2)$、$(2, 1)$ 和 $(2, 2)$ 进行盖印。经过这些操作后,最终有 9 个格子变成了黑色。 ![示例图 1](https://img.atcoder.jp/bitflyer2018-qual/abdf492090c7f44749c1243f34bae924.png) #### 示例 2 印章的图案使得除中央外的所有格子都会变黑。 **本翻译由 AI 自动生成**