题目描述
blablabla
样例
blablabla
```def insert(x):
global idx # 使用全局变量idx,用于在Trie树中添加新节点
p = 0 # Trie树的根节点
for i in range(32)[::-1]: # 从高位到低位遍历x的每一位(假设是32位整数)
u = x >> i & 1 # 获取x的第i位的值(0或1)
if not son[p][u]: # 如果当前位的值u不存在于Trie树的当前节点p下
idx += 1 # 索引加一,准备创建新节点
son[p][u] = idx # 将新节点与当前节点p通过u值连接
p = son[p][u] # 移动到Trie树的下一个节点
def query(x):
p = 0 # 从根节点开始
res = 0 # 用于存储查询过程中计算的异或结果
for i in range(32)[::-1]: # 从高位到低位遍历x的每一位
u = x >> i & 1 # 获取x的第i位的值
if son[p][u^1]: # 如果当前位异或1之后的值在Trie树中存在
res = res * 2 + 1^u # 更新结果res,因为找到了一个位不同的值,所以异或后该位为1
p = son[p][1^u] # 移动到该不同位的节点
else:
res = res * 2 + u # 如果没有找到位不同的值,按当前位的值更新res
p = son[p][u] # 移动到下一个节点
return res # 返回查询到的异或结果
N = 100010 # 假定的最大输入数
M = 31*N # Trie树的最大节点数,每个整数最多31位
idx = 0 # Trie树节点的当前索引
son = [[0]*2 for _ in range(M)] # Trie树的实现,每个节点有两个子节点(0或1)
n = int(input()) # 输入的整数数量
li = list(map(int,input().split())) # 输入的整数列表
res = 0 # 存储最终的最大异或结果
for i in li: # 遍历每个输入的整数
insert(i) # 将当前整数插入Trie树
t = query(i) # 查询当前整数与Trie树中已有整数的最大异或结果
res = max(res,t^i) # 更新最大异或结果
print(res) # 输出最大异或结果
----------
### 算法1
##### (暴力枚举) $O(n^2)$
blablabla
#### 时间复杂度
#### 参考文献
#### C++ 代码
blablabla
----------
### 算法2
##### (暴力枚举) $O(n^2)$
blablabla
#### 时间复杂度
#### 参考文献
#### C++ 代码
blablabla
```
注释写太多!
你谁啊?不懂别bb