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 翻译