A7393. 0/1 Trie 模板
编程题
普及/提高-
知识点
题目描述
小码君有一个数字集合,集合中一共有 $n$ 个非负整数。
接下来有 $q$ 次询问,每次给出一个非负整数 $x$。
对于每次询问,你需要从集合中选择一个数 $a_i$,使得:
$$ x \oplus a_i $$
尽可能大。
其中 $\oplus$ 表示按位异或运算。
请你输出每次询问能够得到的最大异或值。
接下来有 $q$ 次询问,每次给出一个非负整数 $x$。
对于每次询问,你需要从集合中选择一个数 $a_i$,使得:
$$ x \oplus a_i $$
尽可能大。
其中 $\oplus$ 表示按位异或运算。
请你输出每次询问能够得到的最大异或值。
输入格式
第一行输入两个整数 $n,q$,表示集合中数字的个数和询问次数。
第二行输入 $n$ 个非负整数 $a_1,a_2,\dots,a_n$。
接下来 $q$ 行,每行输入一个非负整数 $x$,表示一次询问。
第二行输入 $n$ 个非负整数 $a_1,a_2,\dots,a_n$。
接下来 $q$ 行,每行输入一个非负整数 $x$,表示一次询问。
输出格式
对于每次询问,输出一行一个整数,表示最大的异或值。
输入输出样例
输入 #1
5 4 1 2 3 10 15 0 5 8 7
输出 #1
15 15 11 13
说明/提示
## 样例解释 #1
对于询问 $x=0$:
选择 $15$,有:
$$ 0\oplus 15=15 $$
所以答案是 $15$。
对于询问 $x=5$:
选择 $10$,有:
$$ 5\oplus 10=15 $$
所以答案是 $15$。
对于询问 $x=8$:
选择 $3$,有:
$$ 8\oplus 3=11 $$
所以答案是 $11$。
对于询问 $x=7$:
选择 $10$,有:
$$ 7\oplus 10=13 $$
所以答案是 $13$。
## 数据范围
对于所有测试数据,满足:
- $1\le n,q\le 2\times 10^5$
- $0\le a_i,x<2^{30}$
对于询问 $x=0$:
选择 $15$,有:
$$ 0\oplus 15=15 $$
所以答案是 $15$。
对于询问 $x=5$:
选择 $10$,有:
$$ 5\oplus 10=15 $$
所以答案是 $15$。
对于询问 $x=8$:
选择 $3$,有:
$$ 8\oplus 3=11 $$
所以答案是 $11$。
对于询问 $x=7$:
选择 $10$,有:
$$ 7\oplus 10=13 $$
所以答案是 $13$。
## 数据范围
对于所有测试数据,满足:
- $1\le n,q\le 2\times 10^5$
- $0\le a_i,x<2^{30}$