我们使用类似子集卷积的技巧,集合幂级数 exp 就变成了要求出下面的这么一个 gg

fk,S=T1+T2++Tk=S,T1T2Tk=Si=1kaTigS=k=0Sfk,Sk!f_{k, S} = \sum_{|T_1| + |T_2| + \dots + |T_k| = |S|, T_1 \cup T_2 \cup \dots \cup T_k = S} \prod_{i = 1}^k a_{T_i}\\ g_S = \sum_{k = 0}^{|S|} \frac{f_{k, S}}{k!}\\

并起来恰好等于的限制不好处理,我们像做 OR-FWT 时一样,做个高维前缀和,使得每个 TkT_k 之间相互独立,这样就可以转化成正常的 exp 了;最后再差分回去。

fk,S=TiS,T1+T2++Tk=Si=1kaTiFS(x)=TSaTxTGS(x)=k=0SFSkk!=exp(FS){f'}_{k, S} = \sum_{T_i \subseteq S, |T_1| + |T_2| + \dots + |T_k| = |S|} \prod_{i = 1}^k a_{T_i}\\ {F'}_S(x) = \sum_{T \subseteq S} a_Tx^{|T|}\\ {G'}_S(x) = \sum_{k = 0}^{|S|} \frac{{F'}_S^k}{k!} = \exp({F'}_S)\\

求出所有的 FS{F'}_S 可以 O(2nn2)O(2^nn^2) 完成,那么对于每一个 SS 都暴力 O(n2)O(n^2) exp 即可求出 GG'。最后差分回去即可得到 GG,有 gs=[xS]GS(x)g_s = [x^{|S|}]G_S(x)