模板线性基求交
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;
以上是关于模板线性基求交的主要内容,如果未能解决你的问题,请参考以下文章