P16577 [GKS 2016 #A] Rain

题目描述

海上有座岛屿。该岛屿可以用一个 $R$ 行 $C$ 列的矩阵描述,其中 $H[i][j]$ 表示每个单位格子的高度。以下是一个 $3 \times 3$ 岛屿的示例: ``` 3 5 5 5 4 5 5 5 5 ``` 有时,一场大雨会均匀地落在岛屿的每个格子上。你可以假设降下的水量任意大。这样一场大雨过后,岛屿的某些区域(由一个或多个沿边相连的单位格子组成)可能会积水。只有当区域内每个与区域外格子共享一条边(不仅仅是一个角)的格子,其相邻的区域外格子的高度都更大时,才会发生积水。(周围的海洋视为高度为 $0$ 的无限网格。)否则,水总会流入一个或多个相邻区域(具体流向哪个对我们而言不重要),并最终流入海洋。你可以假设海平面高度永远不会改变。我们用 $W[i][j]$ 表示大雨过后岛屿格子的高度。下面是大雨后示例岛屿的高度。初始高度为 $4$ 的格子只与初始高度更高的格子相邻,因此水会积聚在其中,将其高度提升到 $5$。在此之后,不再有被更高格子包围的区域,因此不会再有积水。再次注意,水不能仅通过角点接触的格子之间直接流动;水必须沿着共享的边流动。 以下是大雨后示例岛屿的高度: ``` 3 5 5 5 5 5 5 5 5 ``` 给定岛屿的高度矩阵,你能计算出大雨过后的总增加高度($\sum(W[i][j]-H[i][j])$)吗?

输入格式

输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。 每个测试用例的第一行包含两个数字 $R$ 和 $C$,表示岛屿的行数和列数。然后有 $R$ 行,每行 $C$ 个正整数。这些行中第 $i$ 行的第 $j$ 个值表示 $H[i][j]$:第 $i$ 行第 $j$ 列格子的高度。

输出格式

对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是总增加高度。

说明/提示

### 限制条件 $1 \leq T \leq 100$。 $1 \leq H[i][j] \leq 1000$。 **小数据集(测试集 1 – 可见)** $1 \leq R \leq 10$。 $1 \leq C \leq 10$。 **大数据集(测试集 2 – 隐藏)** $1 \leq R \leq 50$。 $1 \leq C \leq 50$。 翻译由 DeepSeek V4 Pro 完成