#AT2627. G - Minimum Xor Pair Query

G - Minimum Xor Pair Query

G - 最小异或配对查询

得分:600 分

问题描述

有一个黑板,你可以在上面写整数。最开始,黑板上没有任何整数。给定 $Q$ 个查询,按顺序处理它们。

查询分为以下三种:

  • 1 x:在黑板上写下整数 $x$。

  • 2 x:从黑板上擦去一个 $x$。在给出这个查询时,保证黑板上至少有一个 $x$。

  • 3:输出黑板上任意两个整数的最小异或值。在处理这个查询时,保证黑板上至少有两个整数。

什么是异或运算? 异或运算是将两个相同长度的二进制数按位进行比较,若相同位置上的数字相等,则该位结果为0,否则为1。

约束条件

  • $1 \leq Q \leq 3 \times 10^5$
  • $0 \leq x < 2^{30}$
  • 当给出查询 2 时,黑板上至少有一个整数。
  • 当给出查询 3 时,黑板上至少有两个整数。
  • 所有输入都是整数。

输入

从标准输入中以以下格式给出输入:

QQ

1查询_1

2查询_2

\vdots

Q查询_Q

对于第 $i$ 个查询,给出查询的类型 $c_i$(其中 $c_i$ 取值为 1、2 或 3)。

当 $c_i = 1$ 或 $c_i = 2$ 时,会附加给出一个整数 $x$。

```

输出

输出 $q$ 行,其中 $q$ 是 $c_i = 3$ 的查询数。

第 $j$ 行($1 \leq j \leq q$)应该包含第 $j$ 次这样的查询的答案。


9
1 2
1 10
3
1 3
3
2 2
3
1 10
3
8
1
9
0

处理第一个查询之后,黑板上写着一个 $2$。

处理第二个查询之后,黑板上写着 $2$ 和 $10$。

处理第三个查询时,黑板上任意两个整数的最小异或值是 $2 \oplus 10 = 8$。

处理第四个查询之后,黑板上写着 $2$,$3$ 和 $10$。

处理第五个查询时,黑板上任意两个整数的最小异或值是 $2 \oplus 3 = 1$。

处理第六个查询之后,黑板上写着 $3$ 和 $10$。

处理第七个查询时,黑板上任意两个整数的最小异或值是 $3 \oplus 10 = 9$。

处理第八个查询之后,黑板上写着 $3$ 和两个 $10$。

处理第九个查询时,黑板上任意两个整数的最小异或值是 $10 \oplus 10 = 0$。