• 线性基


    #include<bits/stdc++.h>
    #define reg register
    using namespace std;
    typedef long long ll;
    const int MN=60;
    ll a[61],tmp[61];
    bool flag;
    void ins(ll x)
    {
        for(reg int i=MN; ~i; i--)
            if(x&(1ll<<i))
                if(!a[i])
                {
                    a[i]=x;
                    return;
                }
                else
                    x^=a[i];
        flag=true;
    }
    bool check(ll x)
    {
        for(reg int i=MN; ~i; i--)
            if(x&(1ll<<i))
                if(!a[i])
                    return false;
                else
                    x^=a[i];
        return true;
    }
    ll qmax(ll res=0)
    {
        for(reg int i=MN; ~i; i--)
            res=max(res,res^a[i]);
        return res;
    }
    ll qmin()
    {
        if(flag)
            return 0;
        for(reg int i=0; i<=MN; i++)
            if(a[i])
                return a[i];
    }
    ll query(ll k)
    {
        reg ll res=0;
        reg int cnt=0;
        k-=flag;
        if(!k)
            return 0;
        for(reg int i=0; i<=MN; i++)
        {
            for(int j=i-1; ~j; j--)
                if(a[i]&(1ll<<j))
                    a[i]^=a[j];
            if(a[i])
                tmp[cnt++]=a[i];
        }
        if(k>=(1ll<<cnt))
            return -1;
        for(reg int i=0; i<cnt; i++)
            if(k&(1ll<<i))
                res^=tmp[i];
        return res;
    }
    int main()
    {
        int n;
        ll x;
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
            scanf("%lld",&x),ins(x);
        printf("%lld
    ",qmax());
        return 0;
    }
    rush!
  • 相关阅读:
    selenium操控浏览器
    DOM
    bug记录
    log日志
    linux 搭建 telnet + tftp
    linux 搭建 MeepoPS+Socket
    php常见面试题(2)
    php常见面试题(1)
    laravel 5 支付宝支付教程
    计算机进位制原理
  • 原文地址:https://www.cnblogs.com/LH2000/p/15002734.html
Copyright © 2020-2023  润新知