2021.5.11
CF1119H加强版
这是一个非构造性做法。泰勒应天下大雨!!!!!
题目求的就是这\(n\)个方案异或卷积起来。每个方案的\(FWT\)之后的数组\(va_i\)的值只有\(2^k\)种可能,就是\(k\)个\(a_i\)每个数的系数为\(1\)或\(-1\)。那么如果能求出来FWT之后的数组里\(Q\)下标是第\(i\)种数的有多少种方案,就可以直接求出最终的FWT数组了。
那么对于一个\(Q\),我们要算这个位置的值每个\(a_i\)的系数是\((-1)^{s_i}\)的方案有几个。那么就是
把\((-1)^{s_j}\)移过去,等号左边取值一定是\(1\)或\(-1\),那么可以用\(\frac{x+1}{2}\)来代替艾弗森符号
设\(S\)为\(1\)到\(k\)全集,那么可以继续化
FWT异或卷积基于一个很显然的结论\((-1)^{bitcount(x\,and\,(i\oplus j))}=(-1)^{bitcount(x\,and\,i)}\times(-1)^{bitcount(x\,and\,j)}\)
那么上面的式子继续化,设\(g_{i,T}\)为所有\(T\)集合里的\(j\)里所有\(p_{i,j}\)的异或和。
到这里发现特别神奇的事情,最后一个求和号和FWT异或卷积正变换式子一模一样。
令\(f_{T}(x)=\sum\limits_{i=1}^nx^{g_{i,T}}\),令\(g_T(x)\)为\(f_T(x)\)做FWT正变换的结果,那么最后一个求和号就等于\(g_T(x)\)的第\(Q\)项系数。
那么\(c(Q,s)=\frac{1}{2^k}\sum\limits_{T\subseteq S}(-1)^{\sum\limits_{j\in T}s_j}g_T(x)[x^Q]\)
考虑前面那个求和号,他枚举的有值的\(j\)的位置既是\(T\)的子集又是\(s\)的子集,也就是说这个\(-1\)的幂次就是\(s\)和\(T\)的交集,那么这也是一个异或卷积正变换的式子。前面还有一个\(\frac{1}{2^k}\),这就是逆变换。那么\(c(Q,s)\)就相当于是把\(g\)的函数下标和\(x\)的幂次交换之后的集合幂级数做一个FWT异或卷积逆变换。后面就把贡献乘到一起,再做一个IFWT就能得到最终的答案里。时间复杂度\(O(2^{m+k}(m+k)+n2^k)\)
还有个小优化,可以通过把每个\(p_{i,j}\)异或上\(p_{i,0}\),这样\(s_0\)就确定一定是\(0\)了,只要把答案最后异或上所有的\(p_{i,0}\)即可,这样时间复杂度里的\(k\)全可以替换为\(k-1\)。