#B1494. 动态迷宫中的可见机器人

动态迷宫中的可见机器人

【题目描述】

给定一个 nn 行 nn 列的迷宫。每个位置恰好是以下三种状态之一:

  • #:墙壁;
  • .:空地;
  • R:机器人。

接下来进行 mm 秒的变换。第 ii 秒,位置 (xi,yi)(x_i,y_i) 的状态会变为 #、. 或 R 中给定的一种状态。

在每次变换完成后,请计算当前地图中有多少对机器人两两可见。两个机器人两两可见,当且仅当它们位于同一行或同一列,且它们之间没有墙壁或其他机器人。

也就是说,在同一行或同一列中,只有相邻的两个机器人之间可能构成一对可见机器人;墙壁会把一行或一列分隔成不同的区域。

【输入描述】

第一行输入两个整数 n,mn,m,分别表示迷宫的边长和变换次数。

接下来输入 nn 行,每行一个长度为 nn 的字符串,表示初始地图。

接下来 mm 行,每行输入两个整数 xi,yix_i,y_i 和一个字符 cic_i,表示第 ii 秒将位置 (xi,yi)(x_i,y_i) 的状态修改为 cic_i。

保证:

  • 1≤n≤10001\le n\le1000;
  • 1≤m≤2×1041\le m\le2\times10^4;
  • 1≤xi,yi≤n1\le x_i,y_i\le n;
  • 初始地图和所有 cic_i 只包含 #、.、R。

【输出描述】

输出 mm 行。第 ii 行输出第 ii 次变换后地图中可见机器人对的数量。

【样例 1】

【样例 1 输入】

4 5
R..#
....
#..R
....
1 1 .
1 2 R
4 4 R
3 4 #
4 2 R

【样例 1 输出】

0
0
1
0
2

【样例 1 解释】

第一次变换后只剩下一个机器人,答案为 00。第二次变换后两个机器人既不在同一行,也不在同一列,答案仍为 00。

第三次变换后第 3 行第 4 列和第 4 行第 4 列的两个机器人相邻且同列,答案为 11。第四次变换把第 3 行第 4 列改成墙壁,答案恢复为 00。

第五次变换后,第 1 行第 2 列与第 4 行第 2 列同列可见,第 4 行第 2 列与第 4 行第 4 列同行可见,因此答案为 22。

【样例 2】

【样例 2 输入】

5 5
R...R
.....
..#..
.....
R...R
1 3 R
3 1 #
3 1 .
5 3 R
1 3 .

【样例 2 输出】

5
4
5
6
5

【样例 2 解释】

初始地图中,第 1 行和第 5 行各有一对机器人,第 1 列和第 5 列也各有一对机器人,共有 44 对可见机器人。

第一次变换后,第 1 行变为 R.R.R,中间新增的机器人把这一行的一对可见机器人变成两对,答案增加到 55。

第二次变换把第 3 行第 1 列改为墙壁,阻断第 1 列上下两个机器人之间的视线,答案减少到 44。

第三次变换将该位置恢复为空地,答案恢复到 55。第四次变换在第 5 行中间增加一个机器人,原来的一对可见机器人变成两对,答案增加到 66。

第五次变换移走第 1 行中间的机器人,第 1 行恢复为一对可见机器人,因此答案变为 55。

【数据规模与约定】

测试点编号 分数 特殊性质
1 ~ 3 30 n≤50n\le50,m≤500m\le500
4 ~ 6 n≤300n\le300,m≤5000m\le5000
7 ~ 10 40 无特殊性质