线性基

 

 

 

 

 

 

 

 

 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 }
posted @ 2021-10-31 10:41  上官书房  阅读(45)  评论(0)    收藏  举报