模板线性基求交

Posted xyq0220

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板线性基求交相关的知识,希望对你有一定的参考价值。

线性基求交

struct lb
    ll p[63];
    lb()
        memset(p,0,sizeof(p));
    
    void clear()
        memset(p,0,sizeof(p));
    
    void ins(ll x)
        for(int i=60;i>=0;i--) if((x>>i)&1)
            if(!p[i])
                p[i]=x;
                return;
            else x^=p[i];
        
    
;
lb merge(lb a,lb b)
    lb g=lb(),tmp=a;
    ll cur,d;
    for(int i=0;i<=60;i++) if(b.p[i])
        cur=0,d=b.p[i];
        for(int j=i;j>=0;j--) if(d>>j&1)
            if(tmp.p[j])
                d^=tmp.p[j],cur^=a.p[j];
                if(d) continue;
                g.p[i]=cur;
            else tmp.p[j]=d,a.p[j]=cur;
            break;
        
    
    return g;

以上是关于模板线性基求交的主要内容,如果未能解决你的问题,请参考以下文章

线性基求交板子

[hdu3949]XOR(线性基求xor第k小)

线性基bzoj2844: albus就是要第一个出场

LibreOJ #2013. 「SCOI2016」幸运数字

hdu 3949 XOR (线性基)

[bzoj4184]shallot