题目链接:https://www.luogu.org/problemnew/show/P3812
解题心得:线性基的模板题。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100;
ll n, num[maxn], cxx[maxn];
void insert(ll x) {
for(int i=51;i>=0;i--) {
if(x&(1ll<<i)) {
if(cxx[i] == 0) {
cxx[i] = x;
break;
} else
x ^= cxx[i];
}
}
}
ll query() {
ll ans = 0;
for(int i=51;i>=0;i--) {
ans = max(ans, ans^cxx[i]);
}
return ans;
}
int main() {
// freopen("1.in.txt", "r", stdin);
scanf("%lld", &n);
for(int i=1;i<=n;i++) {
scanf("%lld", &num[i]);
insert(num[i]);
}
printf("%lld\n", query());
return 0;
}