题目链接
题意
计算所有异或起来为0的集合的集合大小之和。即
思路
考虑计算每个数字的贡献。
即数字能参与多少个集合使集合异或和为0。
我们先建出整个序列的线性基,那么那些不在线性基里的元素都能被表示,假设我对任何不在线性基里的元素取或不取,整个集合我都可以使异或和为0.
为什么呢?因为这是线性基能唯一表示一个数字的特点。那么如果线性基里的元素我都取,其他任取,元素$i$的贡献为。
对于那些在线性基中的元素,我去检查一下除他以外的数字构成的线性基,用同样的方法去搞一遍。
主要要理解线性基这个工具他可以确定哪些元素是我可以任选,哪些元素是要看其他数字是否都还有的。
1 |
|