从 n 个数中选出 max(a[i]^x) 的最小值,求 x
采用分治思想,若每一个 a[i] (1<=i<=n) 的二进制第 k 位都是 1 或 0 的话,我们让 x 的第 k 位为 0 或 1,即可将第 k 位置为 0。
但如果第 k 位有 0和1 的话,我们就要比较将其置为 1 还是 0的结果
int n,m;
double t;
int i,j,k;
int DFS(int k,vector &v)
{
if(k<0) return 0;
vector a,b;
int len=v.size();
for(int i=0;i>k) & 1 ) a.pb(v[i]);
else b.pb(v[i]);
}
if(a.size()==0) return DFS(k-1,b);
else if(b.size()==0) return DFS(k-1,a);
else return min(DFS(k-1,a),DFS(k-1,b))+(1< v;
for(i=0;i