2019牛客暑期多校训练营(第一场) - H - XOR - 线性基

https://ac.nowcoder.com/acm/contest/881/H

qls说是hdu5544 http://acm.hdu.edu.cn/showproblem.php?pid=5544

题意:给定n个整数,求其中异或和为0的子集的大小的和。

题解思路:

首先转化为每个可以通过异或表示0的数贡献它参与的子集数。

对n个数进行一次消元,得到一组大小为\(r\)的线性基B1。

那么剩下的\(n-r\)个满足以下的规律:

设现在要计算的元素为X1,其他\(n-r-1\)个元素任意组合,总能得到一个整数,再加入X1也是一个整数,这个整数能被线性基B1表示,则这个X1可以对他们贡献总计\(2^{n-r-1}\)个次。

接下来算线性基B1里的数的贡献。

再对这\(n-r\)个数进行一次消元, 得到另一组线性基B2。枚举B1的一个线性基X2,对其他的r-1+B2个数消元,得到的

猜你喜欢

转载自www.cnblogs.com/Yinku/p/11212303.html