题意
有一个大小为 n n n 的集合 S S S 和 S S S 的子集族 F = { S 0 , S 1 , ⋯ , S m − 1 } {F}=\{S_0,S_1,\cdots,S_{m-1}\} F={
S0,S1,⋯,Sm−1}。要求从 F F F 中选出不超过 k k k 个集合,使得这些集合的并为 S S S,且两两的交为空。问有多少种不同的选择方案。
k ≤ n ≤ 21 , m ≤ 262144 k\le n\le 21,m\le 262144 k≤n≤21,m≤262144
分析
设 f f f 为 F F F 对应的集合幂级数,若定义乘法为子集卷积,那么要求的就是 g = exp ≤ k f = ∑ i = 0 k f i i ! g=\exp_{\le k}f=\sum_{i=0}^k\frac{f^i}{i!} g=exp≤kf=i=0∑ki!fi
先通过 FMT 转化为每个分量上形式幂级数的计算,发现 g g g 满足 g ′ = f ′ g − f k k ! f ′ g'=f'g-\frac{f^k}{k!}f' g′=f′g−k!fkf′