Atcoder arc146 C
C - Even XOR
https://atcoder.jp/contests/arc146/tasks/arc146_c
求多少个 元素值范围在[0,2^N)的集合满足
集合的任意偶数个数的非空子集合,元素xor均不为0
mod 998244353
我的思路
先是在想 线性基, 但实际上 1 2 3 4, 也是合法的, 因为, 虽然3可以由2线性表出,但是它们是3个不是偶数个
然后想转移 n -> n+1
显然集合合法,它的子集也是合法
如果n 合法的方案, 拆一部分 高位填,0 另一部分高位填1, 这样的方案一定是合法, 那么 ans[n][len]
乘2^len
, 贡献到a[n+1][len]
如果对于n合法,必定不存在 a,a+高位,b,b+高位 同时存在的情况, 因此至多有一个 自身和自身+高位同时存在
那么考虑 合法的选定一个 做这种自身和高位都存在, 剩下的依然拆分, 这样依然是合法的, ans[n][len] * len * 2^{len-1}
贡献到a[n+1][len+1]
然后这样似乎能多次做路径计算+组合数可以做
但是问题是 这样算出来 n=3时答案=141, 而正确的是149
也就是漏情况了
可能存在 不合法的n的方案 但是赋予高位0,1 以后变成n+1的方案 就合法了?
那么就是任意在n中 的 xor(A)^xor(B) = 0,
在n+1中 = xor(A)^xor(B+高位) = 高位
也就是n+1 中所有低位产生xor = 0 的必然对应的高位个数是奇数
不会推了