线性基

#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;
}
posted @ 2026-08-24 15:47  msjing  阅读(16)  评论(3)    收藏  举报