题解 [ARC096C] Everything on It
连基础容斥都不会了怎么办啊
第一思路是两层容斥,每层满足一个限制,然后就不会做了
然而第二个限制明显比第一个强,更适合做外层容斥
令 \(F(i)\) 为 有 \(i\) 种 topping 不合法,其余任意的方案数
则
\[ans=\sum (-1)^iF(i)
\]
令 \(f(i)\) 为将 \(i\) 种不合法 topping 放入若干碗的方案数
则
\[F(i)=f(i)\binom{n}{i}2^{2^{n-i}}
\]
令 \(g_{i, j}\) 为 \(i\) 种放 \(j\) 碗(可以不放任何碗)方案数
有
\[g_{i, j}=g_{i-1, j-1}+(j+1)g_{i-1, j}
\]
那个 +1 是在考虑不放任何碗(就是出现了 0 次)
于是
\[f_i=\sum\limits_{j=0}^ig_{i, j}(2^{n-i})^j
\]
巧妙之处在于“不能有重复的碗”的限制的去除
合法的 \(n-i\) 种碗每个枚举放不放不会重
不合法的 \(j\) 碗每一碗都不一样也不会重
这样第二次容斥就直接去掉了
还有一个细节是 \(g_{i, j}\) 看起来像斯特林数但是边界条件并不一样(\(g_{i, 0}=1\))