C. Cross Explosion

    传统题 2000ms 256MiB

Cross Explosion

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

有一个 HHWW 列的网格。用 (i,j)(i,j) 表示从上往下第 ii 行,从左往右第 jj 列的单元格。

最初,每个单元格中都有一面墙。我们将依次处理 QQ 个查询,每个查询会破坏一些墙。请计算处理完所有查询后,剩余的墙的数量。

在第 qq 个查询中,我们得到两个整数 RqR_qCqC_q,表示在位置 (Rq,Cq)(R_q,C_q) 放置一枚炸弹。炸弹会按照以下规则摧毁墙壁:

  1. 如果位置 (Rq,Cq)(R_q,C_q) 有墙:

    • 摧毁该位置的墙,然后结束此次查询
  2. 如果位置 (Rq,Cq)(R_q,C_q) 没有墙:

    • 同时向上、下、左、右四个方向查看,摧毁在每个方向上遇到的第一面墙
    • 具体来说,以下四个过程会同时进行:
      • 向上:如果存在 i<Rqi < R_q,使得 (i,Cq)(i,C_q) 处有墙,且对于所有 i<k<Rqi < k < R_q(k,Cq)(k,C_q) 处都没有墙,则摧毁 (i,Cq)(i,C_q) 处的墙
      • 向下:如果存在 i>Rqi > R_q,使得 (i,Cq)(i,C_q) 处有墙,且对于所有 Rq<k<iR_q < k < i(k,Cq)(k,C_q) 处都没有墙,则摧毁 (i,Cq)(i,C_q) 处的墙
      • 向左:如果存在 j<Cqj < C_q,使得 (Rq,j)(R_q,j) 处有墙,且对于所有 j<k<Cqj < k < C_q(Rq,k)(R_q,k) 处都没有墙,则摧毁 (Rq,j)(R_q,j) 处的墙
      • 向右:如果存在 j>Cqj > C_q,使得 (Rq,j)(R_q,j) 处有墙,且对于所有 Cq<k<jC_q < k < j(Rq,k)(R_q,k) 处都没有墙,则摧毁 (Rq,j)(R_q,j) 处的墙

输入格式

第一行包含三个整数 H,W,QH,W,Q,分别表示网格的行数、列数和查询数量。

接下来 QQ 行,每行包含两个整数 Rq,CqR_q,C_q,表示第 qq 个查询中炸弹放置的位置。

输出格式

输出一个整数,表示处理完所有查询后剩余的墙的数量。

样例

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 解释

让我们按顺序处理查询:

  1. 第一个查询 (R1,C1)=(1,2)(R_1,C_1)=(1,2)

    • 该位置有墙,直接摧毁这面墙
  2. 第二个查询 (R2,C2)=(1,2)(R_2,C_2)=(1,2)

    • 该位置没有墙,向四个方向寻找并摧毁最近的墙
    • 摧毁了 (2,2),(1,1),(1,3)(2,2),(1,1),(1,3) 处的墙
  3. 第三个查询 (R3,C3)=(1,3)(R_3,C_3)=(1,3)

    • 该位置没有墙,向四个方向寻找并摧毁最近的墙
    • 摧毁了 (2,3),(1,4)(2,3),(1,4) 处的墙

最终只剩下 (2,1)(2,1)(2,4)(2,4) 两面墙。

数据范围

  • 1H,W1 \leq H,W
  • H×W4×105H \times W \leq 4 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1RqH1 \leq R_q \leq H
  • 1CqW1 \leq C_q \leq W
  • 所有输入均为整数

[Engeeker周赛 Div1] 20241220

未参加
状态
已结束
规则
乐多
题目
3
开始于
2024-12-20 0:00
结束于
2024-12-23 0:00
持续时间
1.5 小时
主持人
参赛人数
3