zoukankan      html  css  js  c++  java
  • 线性基

    #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!
  • 相关阅读:
    multiprocessing模块
    socket&socketserver网络编程
    collections模块
    socket模块
    网络基础知识
    迭代器,生成器,列表推导式,生成器表达式
    logging模块
    Module
    页面中公用的全选按钮,单选按钮组件的编写
    ajax
  • 原文地址:https://www.cnblogs.com/LH2000/p/15002734.html
Copyright © 2011-2022 走看看