xS×xT=xS⊕T
FWTS(F(x))=∑T(−1)∣S&T∣FT(x)
IFWTS(F(x))=2k1∑T(−1)∣S&T∣FT(x)
对吗?
要优化就是展开 FWT,对吗?
直接高消:fS=∑ifS⊕2ipi+1。fS=∑fS⊕TgT+1。F(x)=F(x)G(x)+I(x)+C(x)。
其中 g2i=pi,IS=1,C0=c,用于调整使 f∅=0。
FWT(F(x))(1−FWT(g(x)))=FWT(I(x))+FWT(C(x))
在 S=∅ 时,FWT∅(G(x))=1,FWT∅(I(x))=2n,所以 c=−2n。
在 S=∅ 的时候,f∅=IFWT∅(FWT(F(x)))=0,所以 FWT∅(F(x))=−∑S=0FWTS(F(x))。
否则一个 FWTS(F(x))=1−FWTS(G(x))−2n,一个 IFWTS(F(x))=2n1(∑T(−1)∣S&T∣2∑j∈Tpj−2n+2∑j∈Tpj2n)。
最后 fs=∑T∑j∈Tpj[∣S&T∣mod2=1],dp 前 i 个,∑pj,与 S 的交集奇偶性。复杂度 O(n∑p)。
异或求和二元卷积
以下涉及两种元的乘法,xi×xj=xi⊕j,yi×yj=yi+j。
求 [x0]∏(1+2xai)。
对每个 S 求出 [xS]FWT(∏(1+2xai)) 再 IFWT 回去。
这个等于 ∏i[xS]FWT(1+2xai),即 ∏i(1+2(−1)∣S&ai∣)。
在这里不是 −1 就是 3,即 (−1)n−tS3tS,这个 tS 可以通过对 ai 的出现次数 FWT 得到。
求 [xSy0]∏(1+xaiy),这里 yi×yj=y(i+j)modm。
[xS]=[y0]∏(1+y(−1)∣S&ai∣),预处理 (∏(1±y))k,复杂度 O(nm+VlogV)。
求 [xSyB]∏(1+xai(y2+2y+1))。
FWT 之后对每个 0≤t≤n 求 [yB](1−(y2+2y+1))n−t(1+(y2+2+1))t。
展开式子然后 ntt 即可。
先数不可重集 hi,(i≤∣S∣) 的方案数,即 ∑a∈T[xayi]∏b∈S(1+xby)。
先 FWT,点乘,fs=[xs]∏b∈S(1+y(−1)∣s&b∣)。
再展开一层,把所有 fs IFWT 回去,hi=∑a∈Tga=∑a∈T2v1∑sfs(−1)∣S&a∣。
hi=[yi]2v1∑s∑a∈T(−1)∣s&a∣(1+y)tss(1−y)∣S∣−tss=2v1[yi](∣T∣−tts)(1+y)tss(1−y)∣S∣−tss
O(∣S∣) 二项式定理即可。
至于对 228 的东西求 tss=∑a∈S[∣a&s∣mod2=0],bitset,每次加一翻转一个后缀,预处理此时对每个 a∈S 的影响。
怎么上面写的都是求 ∣a&S∣mod2 状物。
原来标题写的是异或,那其他 FWT 咋办。
一个 or 卷积的好题。