线性基模板

void add(ll x){//线性基插入创建模板
    for(int i=50;i>=0;i--){
        if(x&(1ll<<i))//注意,如果i大于31,前面的1的后面一定要加ll
        {
            if(d[i])x^=d[i];
            else{
                d[i]=x;
                break;//记得如果插入成功一定要退出
            }
        }
    }
}

  

ll ans(){//求异或最大值/最小值模板
    ll anss=0;
    for(int i=50;i>=0;i--)//记得从线性基的最高位开始
    if((anss^d[i])>anss)anss^=d[i];
    return anss;
 }   

  

原文地址:https://www.cnblogs.com/Never-Land/p/11228625.html