SOS dp

设$ans=\sum\limits_{A \cap B=\varnothing} f(A)g(B) $

直接暴力枚举子集是$O(3^n)$, 一个技巧是先预处理出$h(S)=\sum\limits_{T\subseteq S}g(T)$

然后$ans=\sum\limits_{S\subseteq 2^{U}} f(S)g(2^{U}\backslash S)$

这样复杂度就是$O(n2^n)$

猜你喜欢

转载自www.cnblogs.com/uid001/p/11619460.html
SOS