题库练习 Monotone Monochrome Matrices (Hard Version)
← 上一题 下一题 →

A16849 | Monotone Monochrome Matrices (Hard Version)

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

这是该问题的难度提升版。在本版本中,$n$ 和 $q$ 的限制非常大。仅当你已经解决了该问题的所有版本,才可以 hack。

一个大小为 $n \times n$ 的单色矩阵是一个有 $n$ 行 $n$ 列的矩阵,其中每个格子不是黑色就是白色。我们用 $C[r,c]$ 表示单色矩阵 $C$ 的第 $r$ 行第 $c$ 列的格子的颜色。

我们称这样的矩阵 $C$ 为“单调”,当且仅当它满足以下的条件:

- 不存在两行 $1 \le i < j \le n$ 和两列 $1 \le k < l \le n$,同时满足下列三个条件:
- $C[i,k]=C[j,l]$;
- $C[j,k]=C[i,l]$;
- $C[i,k] \neq C[j,k]$。

现有一个大小为 $n \times n$ 的单色矩阵 $M$,一开始所有格子均为白色。请处理 $q$ 个如下操作:

- $r\;c$:将 $M$ 中第 $r$ 行第 $c$ 列的格子染成黑色。之后,判断 $M$ 是否为单调矩阵。

请注意操作是“持续性的”,即一次操作染色后的矩阵会影响后续所有操作。

对于每个操作,保证操作执行前格子 $(r,c)$ 仍为白色。

请注意,只有你解决了该题所有难度版本后,才可以 hack 此题。

输入格式

每个测试点包含多组数据。第一行包含测试组数 $t$($1 \le t \le 10^3$)。每组数据描述如下。

每组数据第一行包含两个整数 $n$ 和 $q$($2 \le n \le \color{red}{2\,000\,000}$,$1 \le q \le \min(n^2,\color{red}{2\,000\,000})$)。

接下来 $q$ 行,每行包含两个整数 $r_i$, $c_i$,表示第 $i$ 次操作($1 \le r_i,c_i \le n$)。

对于每个操作,保证在操作执行前,$(r,c)$ 仍为白色。

保证所有测试数据中 $n$ 的总和不超过 $\color{red}{2\,000\,000}$。

保证所有测试数据中 $q$ 的总和不超过 $\color{red}{2\,000\,000}$。

输出格式

对于每个操作,输出一行 “YES” 或 “NO”(不区分大小写),表示操作后的矩阵是否为单调矩阵。

你可以任选大小写输出答案。例如 "yEs"、"yes"、"Yes" 都会被识别为肯定答案。

输入输出样例

输入 #1
2
3 9
2 2
3 3
2 3
3 1
3 2
1 1
1 2
2 1
1 3
5 17
2 1
4 5
4 1
3 3
3 1
3 5
1 3
1 5
1 1
5 3
5 5
5 1
1 4
5 2
5 4
1 2
2 5
输出 #1
YES
NO
YES
NO
YES
NO
NO
YES
YES
YES
NO
YES
NO
NO
YES
NO
NO
YES
NO
NO
YES
YES
NO
YES
YES
YES
C++ 编辑器
输入
输出