luogu#P16458. [UOI 2026] mex plus

    ID: 16735 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>并查集图论建模2026线段树分治UOI(乌克兰)

[UOI 2026] mex plus

题目描述

对于每一对数,你需要从中选一个数放入数组 AA,另一个数放入数组 BB。也就是说,对于每一对 (x,y)(x, y),可以进行以下两种选择之一:

  • xx 加入数组 AA,将 yy 加入数组 BB
  • yy 加入数组 AA,将 xx 加入数组 BB

当所有数对的选择都完成后,数组 AA 和数组 BB 的长度将相等。

对于一个数组 CC,记 mex(C)\operatorname{mex}(C) 表示没有在数组 CC 中出现的最小非负整数。例如,若 C=[0,1,4,1,2], C = [0, 1, 4, 1, 2], mex(C)=3\operatorname{mex}(C) = 3,因为数字 001122 在数组中出现了,而数字 33 没有。若 C=[1,2,3], C = [1, 2, 3], mex(C)=0\operatorname{mex}(C) = 0,因为数字 00 没有在数组中出现。

你需要最大化 mex(A)+mex(B). \operatorname{mex}(A) + \operatorname{mex}(B).

在初始的数对集合之后,会给出 qq 个询问。每个询问要么向集合中添加一个数对,要么从集合中删除一个数对。在每次询问之后,你需要针对当前的数对集合,重新求出 mex(A)+mex(B) \operatorname{mex}(A) + \operatorname{mex}(B) 的最大可能值。

重要的是,在每次询问之后,你可以重新选择所有数对中数字的分配方式。也就是说,之前的选择不会限制后续的答案。

输入格式

第一行包含两个整数 nnqq $(1 \le n \le 2 \cdot 10^5, 0 \le q \le 2 \cdot 10^5)$ —— 初始的数对个数以及询问的个数。

接下来的 nn 行给出初始的数对。 其中第 ii 行包含两个整数 aia_ibib_i (0aibi109)(0 \le a_i \le b_i \le 10^9)

再接下来的 qq 行给出询问。每个询问为以下两种格式之一: + x y \texttt{+ } x \ y - x y, \texttt{- } x \ y, 其中 0xy1090 \le x \le y \le 10^9

查询 + x y\texttt{+ x y} 意味着将数对 (x,y)(x, y) 添加到集合中。

查询 - x y\texttt{- x y} 意味着从集合中删除一个数对 (x,y)(x, y)。保证在执行这样的查询时,集合中至少存在一个这样的数对。

输出格式

输出 q+1q + 1 个整数。

第一个整数是对于初始的数对集合,$\operatorname{mex}(A) + \operatorname{mex}(B)$ 的最大值。

然后,在每次询问之后,输出对于当前数对集合,$\operatorname{mex}(A) + \operatorname{mex}(B)$ 的最大值。

每个答案输出在单独的一行中。

5 1
0 1
0 2
1 1
4 5
2 3
+ 4 5
8
9
5 0
1 1
1 1
1 1
1 1
0 0
4
5 0
1 2
2 3
3 4
4 5
5 6
0
5 0
2 2
3 3
0 1
3 4
0 10
6
5 0
1 3
4 5
0 9
0 0
5 6
3

提示

在第一个例子中,对于初始的数对集合,最优的选择例如是 A=[0,2,1,4,3]A = [0, 2, 1, 4, 3]B=[1,0,1,5,2]B = [1, 0, 1, 5, 2]。此时 mex(A)=5\operatorname{mex}(A) = 5mex(B)=3\operatorname{mex}(B) = 3,总和为 88。在添加数对 (4,5)(4, 5) 之后,可以选择例如 A=[0,2,1,5,3,4]A = [0, 2, 1, 5, 3, 4]B=[1,0,1,4,2,5]B = [1, 0, 1, 4, 2, 5],此时 mex(A)=6\operatorname{mex}(A) = 6mex(B)=3\operatorname{mex}(B) = 3,总和为 99

在第二个例子中,值的多重集为 {0,0,1,1,1,1,1,1,1,1}\{0, 0, 1, 1, 1, 1, 1, 1, 1, 1\}。 最优的选择例如是 A=[1,1,1,1,0]A = [1, 1, 1, 1, 0]B=[1,1,1,1,0]B = [1, 1, 1, 1, 0]。此时 mex(A)=mex(B)=2\operatorname{mex}(A) = \operatorname{mex}(B) = 2,总和为 44

在第三个例子中,没有一个值等于 00,因此无论如何选择,都无法使 0A0 \in A0B0 \in B。因此 mex(A)=mex(B)=0\operatorname{mex}(A) = \operatorname{mex}(B) = 0,总和为 00

在第四个例子中,最优的选择例如是 A=[2,3,0,3,10]A = [2, 3, 0, 3, 10]B=[2,3,1,4,0]B = [2, 3, 1, 4, 0]。此时 mex(A)=1\operatorname{mex}(A) = 1mex(B)=5\operatorname{mex}(B) = 5,总和为 66

在第五个例子中,最优的选择例如是 A=[3,4,9,0,6]A = [3, 4, 9, 0, 6]B=[1,5,0,0,5]B = [1, 5, 0, 0, 5]。此时 mex(A)=1\operatorname{mex}(A) = 1mex(B)=2\operatorname{mex}(B) = 2,总和为 33

计分

  • 22 分):n20n \le 20q=0q = 0
  • 77 分):对于所有初始数对满足 bi=109b_i = 10^9,且对于所有询问满足 y=109y = 10^9
  • 88 分):对于所有初始数对满足 ai=0a_i = 0,且对于所有询问满足 x=0x = 0
  • 99 分):n500n \le 500q500q \le 500
  • 1111 分):q=0q = 0
  • 1010 分):所有询问均为 + x y\texttt{+ x y} 形式;
  • 99 分):所有询问均为 - x y\texttt{- x y} 形式;
  • 1313 分):在任意时刻,对于当前集合中的任意三个数对,若第一个数对与第二个数对共享一个数字,且第二个数对与第三个数对共享一个数字,则存在一个数字同时属于这三个数对;
  • 2020 分):n,q105n, q \le 10^5
  • 1111 分):无额外限制。

翻译由 DeepSeek V4 Pro 完成