线性基
线性基:线性基是一个数的集合,并且每个序列都拥有至少一个线性基,取线性基中若干个数异或起来可以得到原序列中的任何一个数。类似于基底的概念,只不过运算方式是异或。
性质:
1. 原序列里面的任意一个数都可以由线性基里面的一些数异或得到。
1. 线性基里面的任意一些数异或起来都不能得到 0。
1. 线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的。
1 | void add(ll x) |
d[i]
表示第 $i$ 为为1,前面位数都为0的基。线性基处理之后,会完成化简,成为最简的线性基。
对于求第 $k$ 小的值,将 $k$ 先转成二进制,假如 $k$ 的第 $i$ 位为1, $ans$ 就异或上线性基中第 $i$ 个元素。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Arn01d's planet!