参考链接:https://blog.csdn.net/UnKfrozen/article/details/86609758#_1
http://www.cnblogs.com/ljh2000-jump/p/5869991.html
构造线性基:
for(int i=1;i<=n;i++)
{
for(int j=62;j>=0;j--)
{
if(!(a[i]>>j))continue;//第j位不是1
if(!p[j])//第j位是1
{
p[j]=a[i];
break;
}
else a[i]^=p[j];
}
}
查询:
long long ans=0;
for(int i=62;i>=0;i--){
ans=max(ans,ans^p[i]);//查询最大的值
}