集合幂级数科技

\(F(x)=\sum_S f_sx^s\)

子集卷积

\(A\cup B=C,|A|+|B|=|C|\),那么按照 \(|S|\) 分成 \(n\) 类,每类先做 OR FWT 求点值,然后枚举 \(|A|=a,|B|=b\) 进行卷积,最后统一做一次 IFWT。复杂度 \(O(2^nn^2)\)

子集卷积逆

\([x^S]G=\frac{[S=0]-\sum_{T>0}F_TG_{S-T}}{F_0}\),暴力算 \(O(3^n)\),半在线卷积 \(O(2^nn^2)\)

子集 exp

组合意义,等价于选出无序簇,那么 \(\exp(f(x))=\prod_{i=1}^n (1+\sum_s [\max s=i]f_s)\)

子集复合

对于 exp/ln,都可以用复合做。
\(G(F(x))=\sum_{i=0}^n g_iF(x)^i\)
首先将我们的子集卷积形式化:

  • 定义 \(*\) 为 OR 卷积,\(\times\) 为子集卷积。
  • 定义 \(f'_S=f_Sx^{|S|},g'\) 同理。
  • 则有 \((f\times g)_S=[x^{|S|}](f'*g')_S\)
  • \(\operatorname{FWT_{OR}}(f*g)=\operatorname{FWT_{OR}}(f)*\operatorname{FWT_{OR}}(g)\)
  • \(\operatorname{FWT_{OR}}(f+g)=\operatorname{FWT_{OR}}(f)+\operatorname{FWT_{OR}}(g)\)

则我们这里可以转化为求 \(\sum_{i=0}^n g_iF'^{(*)i}\),这里 \(F^{(*)i}\) 表示 \(F*F*F*\cdots\)
\(\operatorname{FWT_{OR}}(\sum_{i=0}^n g_iF'^{(*)i})=\sum_{i=0}^n g_i(\operatorname{FWT_{OR}}(F')_S)^i\)

转为 \(O(2^n)\) 次普通多项式复合,那么即可在 \(O(n^22^n)\) 内做完。

做法 2:考虑秦九韶的过程,考虑按照 max S 的顺序加入。复杂度 \(O(\sum_{i=1}^n (n-i)i^22^i)=O(n^2 2^n)\)

posted @ 2025-09-17 15:24  TallBanana  阅读(21)  评论(0)    收藏  举报