线性基其实就是一组线性无关的向量。。
在实现的时候我不假思索的就从低位往高位算,但是反过来才是正解。
得到了线性基之后,从高位开始计算,比从低位开始计算更优。因为高位的线性基明显更大,可以得到更大的结果。
添加一个数到这个向量空间时,最好把这个数放在最大的、没有出现过的向量位置上,否则一个低位上的向量可能比高位上的向量还大。且一个小数,与低位上的向量异或之后可能反而比它本身更大。这样得到的线性基也不一定满足线性无关条件。
/*
2.获取这些向量的最大值的时候,如果是从低位向高位,那就意味着低位是无法选择的,无法得到最大值。如果大基和小基的低位都是1,那么最后这一位就被异或为0,但先选大基再选小基就可以得到最大值。
1.添加一个数的时候,如果从低位开始,高位和低位都可以1,即可以得到线性无关的线性基。但是低位包含了高位,即该数占的高位和低位被捆绑了起来。在2的过程中,虽然高位和低位都在线性基里,但是只能选择一个,不能选择两个,因为没有倒过头来再选择高位一遍。如果从高位开始,低位就不包含高位。而倒过头再选择需要重复多次,所以并不可取。或者可以把每个基与其他基异或一遍,但也比较啰嗦。
*/