Linear Basis
线性基
构造方法
- 逆序枚举 $ t $ 所有为 $ 1 $ 的二进制位 $ j = L $,对于每个 $ j $
- 如果 $ a_j $,则令 $ t = t a_j $
- 如果 $ a_j = 0 $,则
- 枚举 $ k [0, j) $,如果 $ t $ 的第 $ k $ 位为 $ 1 $,则令 $ t = t a_k $
- 枚举 $ k (j, L] $,如果 $ a_k $ 的第 $ j $ 位为 $ 1 $,则令 $ a_k = a_k t $
- 令 $ a_j = t $,结束插入过程
*注意: 加粗的步骤保证了特殊性质.
特殊性质
如上构造的线性基具有很优秀的性质:
每一行要么是空行, 要么a[k]==1
并且只有\(i\gt k\) 并且不在线性基中的位\(i\)才有可能为1
.
于是看一个数是否属于线性空间, 只需要异或上
存在于线性基中的元素
,看其他位置是否全0
.
题目
2018-2019, ICPC, Asia Yokohama Regional Contest 2018 Problem I - Ranks
参考文献: 线性基学习笔记 | Menci's Blog