QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#17876. 区域计数

統計

给你一个 $N \times N$ 的网格。第 $i$ 行第 $j$ 列的单元格记为 $(i, j)$。最初,网格中的每个单元格都被染成白色。

我们将使用 $2N - 2$ 次操作对网格进行染色。第 $i$ 次操作记为 $(d_i, x_i, c_i)$。格式为 $(d, x, c)$ 的操作表示以下内容:

  • 对于 $d = 0$,我们对第 $x$ 列的单元格进行染色。对于 $d = 1$,我们对第 $x$ 行的单元格进行染色。
  • 对于 $c = 0$,我们将该列/行染成白色。对于 $c = 1$,我们将该列/行染成黑色。

保证如果按顺序执行这些操作,第 $2, 3, 4, \dots, N$ 行中的每一行都将按此顺序被恰好染色一次,且第 $2, 3, 4, \dots, N$ 列中的每一列也将按此顺序被恰好染色一次。注意,没有任何操作会给第一行和第一列染色。形式化地,满足以下条件:

  • 对于所有满足 $0 \le i \le 1$ 且 $2 \le j \le N$ 的整数 $i, j$,存在唯一的整数 $1 \le k \le 2N - 2$ 使得 $(d_k, x_k) = (i, j)$。
  • 对于所有满足 $1 \le i < j \le 2N - 2$ 且 $d_i = d_j$ 的整数 $i, j$,满足 $x_i < x_j$。

一个区域定义为相同颜色的相邻单元格的最大连通块,其中如果两个单元格共享一条边,则认为它们是相邻的。你需要求出在按给定顺序执行完这 $2N - 2$ 次操作后,区域的数量。

当然,这个问题太简单了,所以我们为你准备了 $Q$ 个询问!每个询问由 3 个整数 $(z, l, r)$ 表示。在每次询问后,你应该对于所有满足 $l \le x_i \le r$ 且 $d_i = z$ 的第 $i$ 次操作,将 $c_i$ 修改为 $1 - c_i$。然后,在修改后的操作序列下,你需要求出在执行完这 $2N - 2$ 次操作后区域的数量。注意,询问是累加的。

输入格式

第一行包含两个空格分隔的整数 $N$ 和 $Q$。

接下来的 $2N - 2$ 行中,第 $i$ 行包含三个空格分隔的整数 $d_i, x_i, c_i$。

接下来的 $Q$ 行中,第 $i$ 行包含三个空格分隔的整数 $z, l, r$,描述第 $i$ 个询问。

输出格式

对于每个询问,输出一行,包含一个整数,表示区域的数量。

数据范围

  • $2 \le N, Q \le 2 \times 10^5$
  • 对于每个操作,$0 \le d_i, c_i \le 1$ 且 $2 \le x_i \le N$
  • 对于所有满足 $0 \le i \le 1$ 且 $2 \le j \le N$ 的整数 $i, j$,存在唯一的整数 $1 \le k \le 2N - 2$ 使得 $(d_k, x_k) = (i, j)$。
  • 对于所有满足 $1 \le i < j \le 2N - 2$ 且 $d_i = d_j$ 的整数 $i, j$,满足 $x_i < x_j$。
  • 对于每个询问,$0 \le z \le 1$ 且 $2 \le l \le r \le N$。

样例

输入样例 1

5 7
1 2 0
0 2 0
1 3 1
1 4 0
1 5 1
0 3 1
0 4 1
0 5 1
1 3 5
0 4 4
0 2 5
1 2 3
1 5 5
1 3 4
0 2 4

输出样例 1

3
5
5
5
5
6
4

输入样例 2

3 6
0 2 0
1 2 1
0 3 0
1 3 1
0 2 2
0 2 3
0 3 3
1 2 2
1 2 3
1 3 3

输出样例 2

3
2
2
2
2
2

说明

样例 2 中每次操作后网格的状态

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.