loj 113 最大异或和

 

线性基入门题:  

 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 }  
View Code

 

posted @ 2020-02-09 16:13  zjxxcn  阅读(164)  评论(0编辑  收藏  举报