题解 [ARC096E] Everything on It
考虑容斥,令 $f(k)$ 表示至少有 $k$ 个物品在少于两个子集中出现的方案数,这是组合容斥,$ans=\sum\limits_{k=0}^n (-1)^kf(k)$。
考虑如何求 $f(k)$,首先要钦定选的 $k$ 个物品,即 $\dbinom{n}{k}$。发现无论如何这都与所选的集合数量有关,且这也是 $O(n)$ 级别的,因为每个物品至多被一个集合包含(我开始以为所选集合数量是 $O(2^n)$ 的,觉得很困难),令 $g(k,i)$ 表示这 $k$ 个物品所在的集合恰有 $i$ 个的方案数,则 $f(k)=\dbinom{n}{k}\sum\limits_{i=0}^kg(k,i)$。
考虑 $g(k,i)$ 如何求,将 $k$ 个数放进 $i$ 个集合,允许不放,这很像第二类斯特林数,但是允许不放,可以让集合数量 $+1$,不放的全放进该集合内,但也可以全都不放,这与第二类斯特林数的非空集合条件矛盾,所以让划分的数 $+1$,与最后一个数在同一个集合的就是不放的数,即 $\begin{Bmatrix}k+1\\ i+1\end{Bmatrix}$,这 $i$ 个集合剩下的 $n-k$ 个数均是可放可不放的,同时其余不含这 $k$ 个数的子集都是可取可不取的,所以 $g(k,i)=\begin{Bmatrix}k+1\\ i+1\end{Bmatrix}2^{(n-k)i}2^{2^{n-k}}$,$O(n^2)$ 做即可。