AcWing 143. 最大异或对python
原题链接
简单
作者:
头号玩家
,
2024-10-15 09:07:22
,
所有人可见
,
阅读 1
N=int(1e5)
n=int(input())
a=list(map(int,input().split()))
son=[[0]*2 for _ in range(31*n)]
idx=0
res=0
def insert(x):
global idx
p=0
for i in reversed(range(0,31)):
u=x>>i&1
if son[p][u]==0:#没有就创建新节点
idx+=1
son[p][u]=idx
p=son[p][u]
def query(x):
p=0
res=0
for i in reversed(range(31)):
u=x>>i&1
if son[p][~u]:#有相反的就去相反的那条路
p=son[p][~u]
res+=1<<i
else:
p=son[p][u]
return res
for x in a:
insert(x)
for x in a:
res=max(res,query(x))
print(res)