AT_abc475_f [ABC475F] Rectangle Filling
题目描述
有一个 $H$ 行 $W$ 列的网格。将从上往下第 $i$ 行、从左往右第 $j$ 列的格子记为 $(i, j)$。
网格中的每个格子要么是白色,要么是黑色:如果 $S_i$ 的第 $j$ 个字符是 `.`,则 $(i, j)$ 是白色,如果是 `#`,则 $(i, j)$ 是黑色。
你最多可以进行如下操作一次:
- 选择一个矩形区域,并将该区域内的所有格子涂黑。更具体地说,选择整数 $h_1, h_2, w_1, w_2$,满足 $1 \leq h_1 \leq h_2 \leq H$ 且 $1 \leq w_1 \leq w_2 \leq W$,对于所有满足 $h_1 \leq h \leq h_2$、$w_1 \leq w \leq w_2$ 的 $(h, w)$,将其涂为黑色。
求通过最多进行一次上述操作,最终网格可能出现的不同状态数。这里,如果存在一对整数 $(i, j)$,$1 \leq i \leq H,\ 1 \leq j \leq W$,使得一个状态中 $(i, j)$ 是白色而另一个状态中 $(i, j)$ 是黑色,则认为这两个状态不同。
输入格式
输入按照下述格式由标准输入给出:
> $H$ $W$
> $S_1$
> $S_2$
> $\vdots$
> $S_H$
输出格式
输出答案。
说明/提示
### 样例解释 1
通过至多一次操作,可以得到的所有状态如下,共 $7$ 种:
```
#.. ##. #.# ### #.. ##. ###
.## .## .## .## ### ### ###
```
### 约束条件
- $1 \leq H, W$
- $H \times W \leq 2 \times 10^5$
- $H$ 和 $W$ 是整数。
- $S_i$ 是长度为 $W$ 仅包含 `.` 和 `#` 的字符串。
由 ChatGPT 5 翻译