二项式反演学习笔记

有点吊

所谓反演,就是一个 \(f\)\(g\) 之间的关系。假如我们知道了 \(f\),那我们就知道了 \(g\),也就是说假如我们知道了 \(f(x)\) 那就知道了 \(g(x)\)

二项式反演用于解决“某个物品恰好若干个”这类计数问题。

二项式反演:
\(f(n)=\sum^{n}_{i=0} {n\choose i} g(i)\)
互相转化
\(g(n)=\sum^{n}_{i=0} (-1)^{n-i} {n\choose i} f(i)\)

1.我们设 \(f(n)\)\(\le n\) 的方案的数量,\(g(n)\)\(=n\) 的方案的数量那么
\(f(n)=\sum^{n}_{i=0} {n\choose i} g(i)\)
\(g(n)=\sum^{n}_{i=0} (-1)^{n-i} {n\choose i} f(i)\)

2.我们设 \(f(x)\)\(\ge x\) 的方案的数量,\(g(x)\)\(=x\) 的方案的数量,\(x\) 为上界那么
\(f(x)=\sum^{x}_{i=n} {i\choose n} g(i)\)
\(g(x)=\sum^{x}_{i=n} (-1)^{i-n} {i\choose n} f(i)\)

例题:
gym king's colors
题意:
恰好 \(k\) 种颜色涂 \(n\) 个结点的树,相邻节点不能同色,问方案数。
题解

P4859:
\(f(x)\)\(\ge x\) 组,\(g(x)\) 为恰好 \(x\) 组的方案数,那么
\(f(x)=\sum^{n}_{i=x} {i\choose x} g(i)\)
\(g(x)=\sum^{n}_{i=x} (-1)^{i-x} {i\choose x} f(i)\)
所以我们处理出组合数再搞一下 \(f(i)\)
问题在于如何搞 \(g(i)\)
首先对于两个数组排个序,利用双指针,求出 \(p[i]\) 为最后一个 \(< a[i]\)\(b\) 中元素的下标
那么我们就有个 \(dp\)\(dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*(p[i]-j+1)\),意思是分为有 \(i\) 的和没 \(i\) 的,\(i\) 加入的方案是位置减去之前已经选过的数的数量。最后 \(dp[i][j]\) 还要乘上其他数两两配对的方案,预处理阶乘即可。

错牌问题:
题意:求有多少种长度为 \(n\) 的排列使得排列元素和其下标不同。
考虑普遍情况,那么就是求有多少种长度为 \(n\) 的排列存在 \(k\) 个数使得值和其下标不同。
我们设 \(f(x)\) 为不同量 \(\ge x\) 的方案数,\(g(x)\) 为不同量 \(=i\) 的方案数,那么
\(f(x)=\sum^{n}_{i=x} {i\choose x} g(i)\)
\(g(x)=\sum^{n}_{i=x} (-1)^{i-x} {i\choose x} f(i)\)
\(g(n)\) 即为所求

P6478:
如果我们选定了了一个非平局状态,那么非平局时间只会提前。
所以我们设 \(f(x)\) 非平局回合数 \(\ge x\) 的方案数,\(g(x)\) 为非平局回合数 \(=x\) 的方案数
\(f(x)=\sum^{x}_{i=n} {i\choose n} g(i)\)
\(g(x)=\sum^{x}_{i=n} (-1)^{i-n} {i\choose n} f(i)\)
然后现在就是要求出非平局 \(\ge x\) 的方案数,这个我们可以先钦定 \(k\) 个,其他随便放。
然后我们可以先 \(m^{2}\) 搞出大小关系,然后就有个树形 \(dp\)
\(dp_{u,i}\) 为子树 \(u\) 内有 \(i\) 对的方案数。
那么我们可以转移。\(dp_{u,i}\) 有两种情况,一种是用了 \(i\) 一种是没用 \(i\),那么用了
我们先预处理出子树内白点和黑点数量,记为 \(t_{1},t_{2}\)。那么用了的情况就是树形背包容量为 \(i\),没用就是 \(i-1\) 然后再乘上下面的 \((t-i)\) 种方案

posted @ 2024-08-14 15:30  wuhupai  阅读(30)  评论(0)    收藏  举报