啥事线性基?如果你去看了OIwiki上的解释,恭喜你,你肯定是没看懂才来看我的

没错,那些解释的鸟语并没有什么用,它主要是用于解决带异或这种操作的一系列问题的,诸如什么“边权异或值最短路”等。

其实这就像一个只能做二进制下不进位加法的高斯消元,只不过是没有式子最后等于的值,只去削系数,我们希望让他最好是像高斯消元那样每一个系数自己单出来其他位尽量是0,这样可以利于我们更好的去用这个“自由位”掌控我们想让他异或成的数,无论是变得最大还是最小,

所以我们的策略是先让大一点的位自由,那每次往这个“备选库”里加入一个数的时候先用之前原有的数把它消到能被消到的最小值,如果不是0,再以他作为它最高位那一位的“基准”,顺便再去把其他比他大的位的“基准”消到新的最小值,而这个操作是肯定不会把原有基准变的不合法的,只会使那个“基准”逐渐趋近直至等于它最高位的二的幂次,而这时这个位就彻底自由了,当然不自由也无所谓,照样用:

比如你有这么一个库,以及一个你想让他异或随便一些库里的数变得最小,那你就可以看这个位是不是1,若是,就异或上,因为后面增大的再多比不上最高位没掉,否则就不,想让他变最大也是同理。