P16585 [GKS 2016 #C] Safe Squares
题目描述
Codejammon 的训练师们正在积极寻找怪物,但如果你不是训练师,这些怪物对你来说可能非常危险。你可能想找到完全没有怪物的安全地点!
将我们的世界视为一个网格,其中某些格子已被怪物占据。我们定义一个**安全正方形**为一个与网格对齐的 $D \times D$ 的正方形($D \ge 1$),且该正方形内不包含任何怪物。你的任务是计算在整个世界中有多少个(任意大小的)安全正方形。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。每个测试用例的第一行包含三个整数 $R$、$C$ 和 $K$。网格有 $R$ 行 $C$ 列,包含 $K$ 个怪物。接下来 $K$ 行,每行包含两个整数 $R_i$ 和 $C_i$,表示第 $i$ 个怪物所在的行和列。(行从上到下编号,从 $0$ 开始;列从左到右编号,从 $0$ 开始。)
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是该测试用例中安全正方形的总数。
说明/提示
样例 #1 的网格为:
```
0 0 0
0 0 0
0 1 0
```
这里,0 表示没有怪物的格子,1 表示有怪物的格子。共有 $10$ 个安全正方形:$8$ 个 $1\times 1$ 和 $2$ 个 $2\times 2$。
样例 #2 的网格为:
```
0 1 0 1 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
1 0 0 0 1 0 0 0 0 1 1
0 0 0 0 1 0 0 0 0 0 1
```
请注意,样例 #2 只会出现在大数据集中。它有 $51$ 个安全正方形:$32$ 个 $1\times 1$,$13$ 个 $2\times 2$,$5$ 个 $3\times 3$,以及 $1$ 个 $4\times 4$。
### 限制条件
$1 \le T \le 20$。
对于 $i \ne j$,有 $(R_i, C_i) \ne (R_j, C_j)$。(没有两个怪物在同一个格子内。)
$0 \le R_i < R$,$i = 1 \dots K$。
$0 \le C_i < C$,$i = 1 \dots K$。
**小数据集(测试集 1 – 可见)**
$1 \le R \le 10$。
$1 \le C \le 10$。
$0 \le K \le 10$。
**大数据集(测试集 2 – 隐藏)**
$1 \le R \le 3000$。
$1 \le C \le 3000$。
$0 \le K \le 3000$。
翻译由 DeepSeek V4 Pro 完成