Loading

[BZOJ2839] 集合计数

思路

直接计算不好计算, 套路的, 考虑「至少」「至多」来转化

容易发现你「钦定」\(k\) 个元素在交集之中, 也就是说交集大小「至少」为 \(k\) , 怎么处理这个的方案数, 其实比较容易可以发现, 这个的方案数为 (需要注意的是, 每一个集合都是可选可不选的)

\[f(k) = {n \choose k} \left(2^{2^{n - k}} - 1\right) \]

带进套路里, 令 \(g(k)\) 表示「恰好」选择了 \(k\) 个元素在交集之中

你容易发现

\[f(k) = \sum_{i = k}^{n} {n \choose i} g(i) \iff g(k) = \sum_{i = k}^{n} (-1)^{i - k} {n \choose i} f(i) \]

套进去算即可


一些细节与感想 :
首先, 求 \(f\) 的柿子时, 那 \(2^{n - k}\) 个集合不是表示去除 \(k\) 个元素的子集个数, 而是表示包含 \(k\) 个元素的集合个数, 这个对柿子的推导方式有很大的影响
其次关于 \(f \iff g\) 的理解, 其实这可以拆成

\[g(k) = \binom{n}{k} \sum_{i=0}^{n} (-1)^{i}\binom{n}{i}\left(2^{2^{n-k}} - 1\right) \]

即为容斥

总结

常见套路, 板子题

注意很多问题要带一个组合数表示选择哪些

「钦定」意义下, 通过「至少」和「恰好」的转化来简化问题的计算

posted @ 2024-12-30 10:09  Yorg  阅读(17)  评论(0)    收藏  举报