AT_abc472_g [ABC472G] Cascading Grid
题目描述
有一个 $H$ 行 $W$ 列的网格。每个格子上写有一个字符,可能是 `+`、`-` 或 `#`。记 $(i, j)$ 表示从上到下第 $i$ 行、从左到右第 $j$ 列的格子。整个网格由 $H$ 个长度为 $W$ 的字符串 $S_1, S_2, \dots, S_H$ 给出:$S_i$ 的第 $j$ 个字符为格子 $(i, j)$ 上的字符。
你可以进行如下操作任意次(包括零次):
- 选择一个不是 `#` 的格子。将从被选格子出发,只能向左、右、下走且不能经过 `#` 格子的所有格子(包括被选格子本身)全部变成 `#`。
请你求出经过若干次(可为零次)操作后,网格中“`+` 格子的数量减去 `-` 格子的数量”的最大可能值。
输入格式
输入通过标准输入给出,格式如下:
> $H$ $W$
> $S_1$
> $S_2$
> $\vdots$
> $S_H$
输出格式
输出答案。
说明/提示
### 样例解释 1
如果选择 $(2,1)$,第 $2$ 行所有的格子都变成了 `#`(注意不能向上移动)。剩下的第 $1$ 行有两个 `+` 和一个 `-`,所以目标值是 $2-1=1$,这是最大的可能值。
### 样例解释 2
如果选择 $(1,1)$,除了 $(3,2)$ 之外,其他格子都会变成 `#`。请注意,选择的格子本身也会被变成 `#`,并且不能经过 `#` 格子。
### 数据范围
- $1\le H,W\le30$
- $S_i$ 是长度为 $W$ 的字符串,仅由 `+`、`-`、`#` 组成。
- $H$ 和 $W$ 都是整数。
由 ChatGPT 5 翻译