二项式反演

题解:

https://www.cnblogs.com/cjyyb/p/10142878.html

$$f(i)=sumlimits_{i=k}^{n} { C_n^i *g(i)} ag 1$$ 

可以反演出 

$$g(i)=sumlimits_{i=k}^{n} {{(-1)}^{n-i}* C_{n}^{i}} ag 2$$

具体证明只需要把2式的f用1式带入即可 懒得写了

例题1:错排

设$f(x)$为x个元素的全排列 $f(x)=x!$ $g(x)$为x个元素的错排

$$f(n)=sumlimits_{i=0}^{n} { C_n^i *g(i) } $$

然后这个就是上面那个式子,于是可以反演出

$$g(n)=sumlimits_{i=0}^{n} { {(-1)}^{n-i} * C_n^i * f(i) }$$

$$g(n)=n! * sumlimits_{i=0}^{n} { frac{{(-1)}^{i}} {i!} }$$

例题2:染色问题

有$1×n$的一排格子,有$m$种颜色,每个格子染一个颜色,相邻格子颜色不能相同,每种颜色都至少被用到$1$次,求染色方案数。

比较容易想到的是$f[i][j]$表示染前i个用了j种颜色的方案输

$f[i][j]=f[i-1][j-1]*(n-j+1)+f[i-1][j]*(j-1)$ 这样子是$nm$的

考虑一种更快的算法

这题直接容斥是没法做的,我们并不能算出至少有k个相邻位置相同的方案输

令$f(x)$表示用$<=x$种颜色,相邻不同 g(x)$表示正好用x种颜色,相邻不同

显然$f(m)=m!*{(m-1)}^{n-1}$

$$f(m)=sumlimits_{i=1}^{m} { g(i)* C_m^i }$$

那么这个就可以反演了

原文地址:https://www.cnblogs.com/yinwuxiao/p/10189179.html