发现了线性基的一些性质和用法
线性基合并
直接把另一个暴力插入。
可以判一下如果满了就不插入,剪枝很有作用
一定要满足从高位到低位贪心
struct Data{
int a[32];
bool flag;
Data(){
memset(a,0,sizeof(a)); flag = 0; }
Data operator + (Data z){
Data res = z;
if ( z.flag ) return res;
if ( flag ) return *this;
for (int i = 30 ; i >= 0 ; i--){
int x = a[i];
for (int j = 30 ; j >= 0 ; j--){
if ( x >> j & 1 ){
if ( !(res.a[j] >> j & 1) ){
res.a[j] = x; break; }
x ^= res.a[j];
}
}
}
res.flag = 1;
for (int i = 29 ; i >= 0