11057: 洛谷P6136 -【模板】普通平衡树(数据加强版)
[Creator : ]
Description
本题是 P3369 数据加强版,扩大数据范围并增加了强制在线。
题目的输入、输出和原题略有不同,但需要支持的操作相同。
您需要写一种数据结构(可参考题目标题),来维护一些整数,其中需要提供以下操作:
1. 插入一个整数 $x$。
2. 删除一个整数 $x$(若有多个相同的数,只删除一个)。
3. 查询整数 $x$ 的排名(排名定义为比当前数小的数的个数 $+1$)。
4. 查询排名为 $x$ 的数(如果不存在,则认为是排名小于 $x$ 的最大数。保证 $x$ 不会超过当前数据结构中数的总数)。
5. 求 $x$ 的前驱(前驱定义为小于 $x$,且最大的数)。
6. 求 $x$ 的后继(后继定义为大于 $x$,且最小的数)。
本题强制在线,保证所有操作合法(操作 $2$ 保证存在至少一个 $x$,操作 $4,5,6$ 保证存在答案)。
题目的输入、输出和原题略有不同,但需要支持的操作相同。
您需要写一种数据结构(可参考题目标题),来维护一些整数,其中需要提供以下操作:
1. 插入一个整数 $x$。
2. 删除一个整数 $x$(若有多个相同的数,只删除一个)。
3. 查询整数 $x$ 的排名(排名定义为比当前数小的数的个数 $+1$)。
4. 查询排名为 $x$ 的数(如果不存在,则认为是排名小于 $x$ 的最大数。保证 $x$ 不会超过当前数据结构中数的总数)。
5. 求 $x$ 的前驱(前驱定义为小于 $x$,且最大的数)。
6. 求 $x$ 的后继(后继定义为大于 $x$,且最小的数)。
本题强制在线,保证所有操作合法(操作 $2$ 保证存在至少一个 $x$,操作 $4,5,6$ 保证存在答案)。
Input
第一行两个正整数 $n,m$,表示初始数的个数和操作的个数。
第二行 $n$ 个整数 $a_1,a_2,a_3,\ldots,a_n$,表示初始的数。
接下来 $m$ 行,每行有两个整数 $\text{opt}$ 和 $x'$,$\text{opt}$ 表示操作的序号($ 1 \leq \text{opt} \leq 6 $),$x'$ 表示加密后的操作数。
我们记 $\text{last}$ 表示上一次 $3,4,5,6$ 操作的答案,则每次操作的 $x'$ 都要**异或**上 $\text{last}$ 才是真实的 $x$。初始 $\text{last}$ 为 $0$。
第二行 $n$ 个整数 $a_1,a_2,a_3,\ldots,a_n$,表示初始的数。
接下来 $m$ 行,每行有两个整数 $\text{opt}$ 和 $x'$,$\text{opt}$ 表示操作的序号($ 1 \leq \text{opt} \leq 6 $),$x'$ 表示加密后的操作数。
我们记 $\text{last}$ 表示上一次 $3,4,5,6$ 操作的答案,则每次操作的 $x'$ 都要**异或**上 $\text{last}$ 才是真实的 $x$。初始 $\text{last}$ 为 $0$。
Output
输出一行一个整数,表示所有 $3,4,5,6$ 操作的答案的异或和。
Constraints
对于 $100\%$ 的数据,$1\leq n\leq 1.1^6$,$1\leq m\leq 10^6$,$0\leq a_i,x\lt 2^{30}$。
Sample 1 Input
6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 8
3 13
6 7
1 4
Sample 1 Output
6
样例加密前为:
6 7 1 1 4 5 1 4 2 1 1 9 4 1 5 9 3 8 6 1 1 0