线性基




1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 inline ll re_ad() { 5 char ch=getchar(); ll x=0,f=1; 6 while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); } 7 while('0'<=ch && ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar(); 8 return x*f; 9 } 10 11 const ll N=111,St=50; 12 ll n,a[N],p[N]; 13 14 int main() 15 { 16 n=re_ad(); 17 for(ll i=1;i<=n;++i) a[i]=re_ad(); 18 for(ll i=1,x=a[i];i<=n;++i,x=a[i]) { 19 for(ll j=St;j>=0;--j) if((x>>j)&1) { 20 if(!p[j]) { p[j]=x; break; } 21 else x^=p[j]; 22 } 23 } 24 ll ans=0; 25 for(ll j=50;j>=0;--j) if((ans^p[j])>ans) ans^=p[j]; 26 printf("%lld\n",ans); 27 return 0; 28 }

浙公网安备 33010602011771号