理解 :线性基 类似于 向量的极大无关组,就是保持原来所有数的异或值的最小集合,
求解过程也类似,可以 O( 60 * n )的复杂度求出线性基,线性基有许多性质,例如 线性基
里面的数进行异或 的值域与原来所有数异或的值域相同。
#include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 123 ll n,a[maxn],ans,p[maxn]; void getji(ll x) { for(int i=62; i>=0; i--) { if(!(x>>(ll)i)) continue; if(!p[i]) { p[i]=x; break; } x^=p[i]; } } int main() { scanf("%lld",&n); for(int i=1; i<=n; i++) { scanf("%lld",&a[i]); getji(a[i]); } for(int i=62; i>=0; i--) if((ans^p[i])>ans) ans^=p[i]; printf("%lld ",ans); return 0; }