天天看点

洛谷 P3812 【模板】线性基

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=100;

ll ans[maxn];
int n,cnt;

void kaven(){
  
  cnt=1;
  for(int i=50,j;i>=0;i--){
    
    for(j=cnt;j<=n;j++) if((ans[j]>>i)&1) break;
    if(j<=n){
      
      swap(ans[cnt],ans[j]);
      for(j=1;j<=n;j++) if(j!=cnt && (ans[j]>>i)&1) ans[j]^=ans[cnt];
      cnt++;
    }
  }
}

int main(){
  
  scanf("%d",&n);
  for(int i=1;i<=n;i++) scanf("%lld",&ans[i]);
  kaven();
  ll Max=0;
  for(int i=1;i<cnt;i++) Max^=ans[i];
  printf("%lld\n",Max);
}      

继续阅读