CF706D Vasiliy's Multiset

题目描述

作者已经没有关于 Vasiliy 的新故事了,所以这里只给出一个正式的题目描述。 你将得到 $q$ 个操作和一个多重集 $A$,初始时 $A$ 只包含整数 $0$。操作分为三种类型: 1. "+ x" —— 将整数 $x$ 加入多重集 $A$。 2. "- x" —— 从多重集 $A$ 中删除一个 $x$,保证此时多重集 $A$ 至少有一个 $x$。 3. "? x" —— 给定整数 $x$,需要计算值 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/728a3690d3a76b81fb1ccb07b4c04b8d10b1870d.png),即 $x$ 和多重集 $A$ 中某个整数 $y$ 的按位异或(XOR)的最大值。 多重集是一种集合,允许存在相等的元素。

输入格式

输入的第一行包含一个整数 $q$($1\leq q\leq 200000$),表示 Vasiliy 需要执行的操作数。 接下来的 $q$ 行中,每行包含一个字符 "+"、"-" 或 "?" 以及一个整数 $x_i$($1\leq x_i\leq 10^9$)。保证一定存在至少一个第三类型的查询。 注意,多重集 $A$ 中整数 $0$ 始终存在。

输出格式

对于每个 "?" 类型的查询,输出一行,一个整数,表示 $x_i$ 与多重集 $A$ 中某个整数按位异或(XOR)的最大值。

说明/提示

前五次操作后,多重集 $A$ 包含整数 $0$、$8$、$9$、$11$、$6$ 和 $1$。 第六个查询的答案是整数 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/4b442d72cf0f109da9eae35430cf9dc9dfa35fdf.png),即下列整数中的最大值:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/c712973b7cb6a6b393c3b423fc78dda636ebb034.png)、![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/e9b3f94b7acd1861f4b82fb60d691b2bd163374e.png)、![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/1bf5d0b4ff98720973629f7915ae529e790539ba.png)、![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/9023c8bab139f08429005ae47d2d497f5795be9b.png)、![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF706D/e21b15be88af70287d01c0b8f13ae0d351197a9c.png)。 由 ChatGPT 5 翻译