#5204. Cross Explosion

0

Cross Explosion

Cross Explosion

题目描述

有一个有 HH 行 WW 列的网格。令 (i,j)(i, j) 表示从上数第 ii 行、从左数第 jj 列的格子。
起初,每个格子里都有一面墙。
按照下面按给定顺序处理 QQ 个查询后,求剩余的墙的数量。 在第 qq 次查询中,会给出两个整数 RqR_q 和 CqC_q。
你在 (Rq,Cq)(R_q, C_q) 放置一个炸弹以摧毁墙。结果会发生如下过程。

如果 (Rq,Cq)(R_q, C_q) 有一面墙,摧毁该墙并结束该次过程。 如果 (Rq,Cq)(R_q, C_q) 没有墙,则从 (Rq,Cq)(R_q, C_q) 向上、下、左、右看时首次出现的墙被摧毁。更精确地说,以下四个过程同时发生: 如果存在某个 i<Rqi \lt R_q 使得 (i,Cq)(i, C_q) 有墙且对所有 i<k<Rqi \lt k \lt R_q 都不存在墙,则摧毁 (i,Cq)(i, C_q) 处的墙。 如果存在某个 i>Rqi \gt R_q 使得 (i,Cq)(i, C_q) 有墙且对所有 Rq<k<iR_q \lt k \lt i 都不存在墙,则摧毁 (i,Cq)(i, C_q) 处的墙。 如果存在某个 j<Cqj \lt C_q 使得 (Rq,j)(R_q, j) 有墙且对所有 j<k<Cqj \lt k \lt C_q 都不存在墙,则摧毁 (Rq,j)(R_q, j) 处的墙。 如果存在某个 j>Cqj \gt C_q 使得 (Rq,j)(R_q, j) 有墙且对所有 Cq<k<jC_q \lt k \lt j 都不存在墙,则摧毁 (Rq,j)(R_q, j) 处的墙。

输入格式

输入从标准输入给出,格式如下: HH WW QQ R1R_1 C1C_1 R2R_2 C2C_2 ⋮\vdots RQR_Q CQC_Q

输出格式

输出处理完所有查询后剩余的墙的数量。

2 4 3
1 2
1 2
1 3
2
5 5 5
3 3
3 3
3 2
2 2
1 2
10
4 3 10
2 2
4 1
1 1
4 2
2 1
3 1
1 3
1 2
4 3
4 2
2

提示

1≤H,W1 \leq H, W H×W≤4×105H \times W \leq 4 \times 10^5 1≤Q≤2×1051 \leq Q \leq 2 \times 10^5 1≤Rq≤H1 \leq R_q \leq H 1≤Cq≤W1 \leq C_q \leq W 所有输入值均为整数。处理查询的过程可以如下解释:

在第 1 次查询中,(R1,C1)=(1,2)(R_1, C_1) = (1, 2)。(1,2)(1, 2) 有一面墙,所以摧毁了 (1,2)(1, 2) 的墙。 在第 2 次查询中,(R2,C2)=(1,2)(R_2, C_2) = (1, 2)。(1,2)(1, 2) 没有墙,所以摧毁了 (2,2),(1,1),(1,3)(2,2),(1,1),(1,3),它们是从 (1,2)(1, 2) 向上、下、左、右 看时首次出现的墙。 在第 3 次查询中,(R3,C3)=(1,3)(R_3, C_3) = (1, 3)。(1,3)(1, 3) 没有墙,所以摧毁了 (2,3),(1,4)(2,3),(1,4),它们是从 (1,3)(1, 3) 向上、下、左、右 看时首次出现的墙。

处理完所有查询后,剩下两面墙,位于 (2,1)(2, 1) 和 (2,4)(2, 4)。

标签: AtCoder|abc370D

来源

AtCoder|abc370D