题意:给出n个数,求在这n个数中取两个数使得他们异或最大,可以取相同的数
1<=n<=1e5
思路: 异或是从二进制高位到地位进行,相同为0,相异为1,
所以就涉及前缀匹配问题,考虑用01字典树
先把所有的数按二进制插入字典树,然后枚举每一个数按二进制查找,每一位都贪心优先找相异的路径,最终得到的路径值就是当前这个数与这个数组任意一个元素的最大异或值
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<math.h>
#include<set>
using namespace std;
#define LL long long
#define ULL unsigned long long
const int INF=30000000;
const double eps=1e-5;
const int<