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; }