QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 512 MB Points totaux : 100

#7982. 正方形游戏

Statistiques

你听说过 Hex 游戏吗?Hex 是一款在六边形棋盘上进行的双人游戏。游戏规则是红方和蓝方轮流在棋盘的空位上放置各自颜色的棋子,直到红方将棋盘的顶部和底部连通,或者蓝方将棋盘的左侧和右侧连通。率先达成目标的玩家获胜。这里的连通条件是:必须存在一条该玩家颜色的路径,连接两个至少共用一条边的相邻六边形。例如,以下两个 Hex 游戏棋盘对蓝方而言都是胜利局面。

可以证明,Hex 游戏中只会有一名获胜者。

Bobo 也想玩 Hex,但他认为在棋盘上使用六边形格子太复杂了。于是,他发明了一种名为 Square 的新游戏!Square 的规则与 Hex 类似,红方和蓝方轮流在棋盘的空位上放置各自颜色的棋子,直到红方将棋盘的顶部和底部连通,或者蓝方将棋盘的左侧和右侧连通。然而,在 Square 中,棋盘是由许多小正方形组成的矩形,连通条件保持不变,即存在一条该玩家颜色的路径,连接两个至少共用一条边的相邻正方形(即四连通)。以下两个 $5 \times 6$ 棋盘上的 Square 棋局分别是红方和蓝方的胜利局面。

Bobo 很兴奋地与他的朋友 oboB 分享了这个 Square 游戏。然而,oboB 立即意识到一个问题:Bobo 的 Square 游戏可能会导致平局!例如,以下两个 $5 \times 6$ 棋盘上的 Square 棋局都是平局,因为双方都已无法落子,且红方棋子没有连通棋盘的顶部和底部,蓝方棋子也没有连通棋盘的左侧和右侧。

“但是……应该不会有很多平局吧,对吧?”Bobo 固执地说。为了反驳 Bobo,oboB 画了一个 $n$ 行 $m$ 列的红蓝格子矩阵。“我从中随机选择一个子矩阵作为游戏棋盘,它很有可能是平局!”Bobo 似乎同意了,但他突然想到了别的事情,“为了使 Square 的规则有效,所选的子矩阵必须满足顶部和底部全是红色格子,且左侧和右侧全是蓝色格子!(对应示例矩阵中的红/蓝线)”oboB 别无选择,只能同意 Bobo 的论点,“那么你能统计一下有多少个游戏棋盘满足这个条件吗?”

形式化地,给定一个 $n$ 行 $m$ 列的矩阵 $A$,其中每个格子要么是红色(‘R’)要么是蓝色(‘B’),你需要统计满足以下条件的四元组 $(x_1, x_2, y_1, y_2)$ 的数量(其中 $(x_1, y_1)$ 和 $(x_2, y_2)$ 是你所选子矩阵的左上角和右下角坐标):

  1. $2 \le x_1 \le x_2 \le n - 1, 2 \le y_1 \le y_2 \le m - 1$(你必须选择一个子矩阵)
  2. $\forall y_1 \le j \le y_2, A_{x_1-1,j} = A_{x_2+1,j} = \text{‘R’}$(子矩阵的顶部和底部必须全为红色)
  3. $\forall x_1 \le i \le x_2, A_{i,y_1-1} = A_{i,y_2+1} = \text{‘B’}$(子矩阵的左侧和右侧必须全为蓝色)
  4. 不存在一个格子序列 $P = ((i_1, j_1), (i_2, j_2), \dots, (i_\ell, j_\ell))$ 满足: (a) $\ell \ge 1, i_1 = x_1, i_\ell = x_2$ (b) $\forall 1 \le k \le \ell, x_1 \le i_k \le x_2 \land y_1 \le j_k \le y_2$ (c) $\forall 1 \le k \le \ell, A_{i_k,j_k} = \text{‘R’}$ (d) $\forall 1 \le k \le \ell - 1, |i_k - i_{k+1}| + |j_k - j_{k+1}| = 1$ (即不存在连接顶部和底部的红色路径)
  5. 不存在一个格子序列 $P = ((i_1, j_1), (i_2, j_2), \dots, (i_\ell, j_\ell))$ 满足: (a) $\ell \ge 1, j_1 = y_1, j_\ell = y_2$ (b) $\forall 1 \le k \le \ell, x_1 \le i_k \le x_2 \land y_1 \le j_k \le y_2$ (c) $\forall 1 \le k \le \ell, A_{i_k,j_k} = \text{‘B’}$ (d) $\forall 1 \le k \le \ell - 1, |i_k - i_{k+1}| + |j_k - j_{k+1}| = 1$ (即不存在连接左侧和右侧的蓝色路径)

输入格式

第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 1500$),分别表示矩阵的行数和列数。接下来的 $n$ 行中,第 $i$ ($1 \le i \le n$) 行包含一个长度为 $m$ 的字符串,仅由 ‘R’ 和 ‘B’ 组成。第 $i$ 行的第 $j$ ($1 \le j \le m$) 个字符表示矩阵中第 $i$ 行第 $j$ 列格子的颜色,其中 ‘R’ 代表红色,‘B’ 代表蓝色。

输出格式

输出一行一个整数,表示构成 Square 棋盘平局的子矩阵数量(形式化定义已在题目描述中给出)。

样例

样例输入 1

6 6
RRRRRB
BRRRBB
BBRBBB
BBBRBB
BBRRRB
BRRRRR

样例输出 1

2

样例输入 2

5 5
BRRRB
BBRRB
BRBRB
BRRBB
BRRRB

样例输出 2

1

样例输入 3

7 7
BRRRRRB
BRBBBRB
BBRBRBB
BRRRRRB
BBRBRBB
BRBBBRB
BRRRRRB

样例输出 3

7

样例输入 4

3 3
RRR
BRB
RRR

样例输出 4

0

样例输入 5

20 20
RRRRRRRRRRRRRRRRRRRR
BRRRRRRRRRRRRRRRRRRB
BBBBBBRRBBBBRRRRRRRB
BRRRRBBBBRRBRRRRRRRB
BRRRRRRRRRRBRRRRRRRB
BBBBBBBBBBBBRRRRRRRB
BRRRRRRRRRRRRRRRRRRB
BRRRRRRRRRRRRRRRRRRB
BBBBBBBBBRRRRRRRRRRB
BRRRRRRRBRBBBBRRRRRB
BRRRRRRRBBBRRBRRRRRB
BRRRRRRRRRRRRBRRRBBB
BRRRRRRRRRRRRBRBBBRB
BBBBBBBRRRRRRBBBRRRB
BRRRRRBRRRRRRRRRRRRB
BRRRRRBRRRRRRRRRRRRB
BRRRRRBRRRRRRRRRRRRB
BBBBBBBBBBRRRRRRRRRB
BRRRRRRRRRRRRRRRRRRB
RRRRRRRRRRRRRRRRRRRR

样例输出 5

0

说明

为了辅助理解,我们提供前两个样例测试的图形说明。第一个样例测试中的两个有效子矩阵如下所示。

第二个样例测试中的一个有效子矩阵如下所示。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.