线性基
#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn=2e6+10;
int read()
{
int x=0,f=1;
char ch=getchar();
while (ch<'0' || ch>'9')
{
if (ch == '-') f=-1;
ch=getchar();
}
while (ch>='0' && ch<='9')
{
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
int n;
int k[maxn];
signed main()
{
n=read();
for (int i=1;i<=n;i++)
{
int x=read();
for (int j=62;j>=0;j--)
if (x&(1ll<<j))
{
if (!k[j])
{k[j]=x;break;}
else x^=k[j];
}
}
int ans=0;
for (int i=62;i>=0;i--)
if ((ans^k[i])>ans) ans^=k[i];
printf("%lld\n",ans);
return 0;
}
$\mathscr{msjing}$

浙公网安备 33010602011771号