loj 113 最大异或和
线性基入门题:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 int n; 5 ll d[60]; 6 void insert(ll x){ 7 for(int i=50;i>=0;i--){ 8 if(x&(1LL<<i)){ 9 if(!d[i]) { 10 d[i]=x; 11 break; 12 }else x^=d[i]; 13 } 14 } 15 } 16 int main(){ 17 scanf("%d",&n); 18 for(int i=0;i<n;i++){ 19 ll x; 20 scanf("%lld",&x); 21 insert(x); 22 } 23 ll ans=0; 24 for(int i=50;i>=0;i--) 25 if((ans^d[i])>ans) ans^=d[i]; 26 printf("%lld\n",ans); 27 return 0; 28 }