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