集合幂级数学习笔记

FWT

并非集幂核心内容,鸽了。

子集卷积

给定 \(f_S,g_S\),其中 \(S\subseteq\{0,1\}^n\),求

\[h_S=\sum_{T\subseteq S}f_Tg_{S/T} \]

称这样的卷积方式为子集卷积,\(T\)\(S/T\)不交并\(S\)

考虑按 \(|S|\) 分类,这样 \(T_1\)\(T_2\) 不交并为 \(S\) 等价于 \(|T_1|+|T_2|=|S|\)\(T_1\cup T_2=S\)

\(f'_{i,S}\)\(g'_{i,S}\),将 \(f_S\rightarrow f_{|S|,S}\)。则先对每一行(第一维相同)分别或运算 FWT,再把每一列做卷积,再对每一行或运算 IFWT,\(h_S=h'_{|S|,S}\)

这相当于枚举了子集卷积定义式中的 \(|T|\)\(|S/T|\),从而保证不交。

占位多项式

考虑从另一个角度理解子集卷积,按 \(|S|\) 分组相当于 \(f_S\leftarrow x^{|S|}f_S\),称 \(x^{|S|}f_S\)占位多项式。子集卷积就是把转为占位多项式后的 \(f\) 先做 FWT,再对每一位卷积,再 IFWT。这是因为 FWT 把或卷积变为了逐位乘,只需要用占位多项式保证不交即可。

exp

求占位多项式,再 FWT,做多项式 exp(暴力做 \(\mathcal{O}(n^2)\)),再 IFWT 即可。还是因为 FWT 把所有运算都变成了逐位运算。

通用做法

求占位多项式,做 FWT,逐位做对应运算,再 IFWT 即可。

posted @ 2026-01-15 16:14  SmpaelFx  阅读(3)  评论(0)    收藏  举报