题解:P10461 多项式复合集合幂级数

· · 题解

Solution

f_{k,S} 表示 [x^S]F^k(x)g_{i} 表示 [x^n]G(x)。集合幂级数的乘法是子集卷积。

考虑 \sum_{k=0}^{n}g_k\times f_{k,S} 的组合意义:初始集合为 S,每次删一个包含 \max S 的子集,如果删了 k 次有 g_k\times k! 的贡献。注意这里的正确性依赖 f_{1,\varnothing}=0

[x^S]H_{i,j}(x) 表示删除了 j 次后集合变为 S,且 \max S\le i,这种情况下所有删 S 方案的贡献和。

初始时 h_{0,i,\varnothing}=g_i\times i!。考虑从小到大枚举 i,刷表法转移:

显然,H_{n,0} 即为答案。

转移时忽略 \max S>i 的集合,时间复杂度为 \sum_{i=0}^{n}(n-i)i^22^i=\mathcal O(n^22^n)。使用滚动数组压掉第一维,空间复杂度为 \mathcal O(n2^n)