#B1494. 动态迷宫中的可见机器人
动态迷宫中的可见机器人
【题目描述】
给定一个 行 列的迷宫。每个位置恰好是以下三种状态之一:
#:墙壁;.:空地;R:机器人。
接下来进行 秒的变换。第 秒,位置 的状态会变为 #、. 或 R 中给定的一种状态。
在每次变换完成后,请计算当前地图中有多少对机器人两两可见。两个机器人两两可见,当且仅当它们位于同一行或同一列,且它们之间没有墙壁或其他机器人。
也就是说,在同一行或同一列中,只有相邻的两个机器人之间可能构成一对可见机器人;墙壁会把一行或一列分隔成不同的区域。
【输入描述】
第一行输入两个整数 ,分别表示迷宫的边长和变换次数。
接下来输入 行,每行一个长度为 的字符串,表示初始地图。
接下来 行,每行输入两个整数 和一个字符 ,表示第 秒将位置 的状态修改为 。
保证:
- ;
- ;
- ;
- 初始地图和所有 只包含
#、.、R。
【输出描述】
输出 行。第 行输出第 次变换后地图中可见机器人对的数量。
【样例 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 解释】
第一次变换后只剩下一个机器人,答案为 。第二次变换后两个机器人既不在同一行,也不在同一列,答案仍为 。
第三次变换后第 3 行第 4 列和第 4 行第 4 列的两个机器人相邻且同列,答案为 。第四次变换把第 3 行第 4 列改成墙壁,答案恢复为 。
第五次变换后,第 1 行第 2 列与第 4 行第 2 列同列可见,第 4 行第 2 列与第 4 行第 4 列同行可见,因此答案为 。
【样例 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 列也各有一对机器人,共有 对可见机器人。
第一次变换后,第 1 行变为 R.R.R,中间新增的机器人把这一行的一对可见机器人变成两对,答案增加到 。
第二次变换把第 3 行第 1 列改为墙壁,阻断第 1 列上下两个机器人之间的视线,答案减少到 。
第三次变换将该位置恢复为空地,答案恢复到 。第四次变换在第 5 行中间增加一个机器人,原来的一对可见机器人变成两对,答案增加到 。
第五次变换移走第 1 行中间的机器人,第 1 行恢复为一对可见机器人,因此答案变为 。
【数据规模与约定】
| 测试点编号 | 分数 | 特殊性质 |
|---|---|---|
1 ~ 3 |
30 | , |
4 ~ 6 |
, | |
7 ~ 10 |
40 | 无特殊性质 |