引言
刚刚在看一篇题解的时候发现了这种容斥,我觉得很新奇,同时觉得这东西应该挺有用
正文
假设一共有
n个人,我要计算“恰好有
k个人满足某特定条件”的方案数
我先钦定某
i个人满足这个特定条件(其他人满足不满足无所谓)。然后在这
i个人满足条件的情况下,得到的方案数为
f(i)。
那么
ans=i=k∑up(−1)i−k(ki)(in)f(i)
其中
(−1)i−k(ki)
就是容斥系数
先说一个公式,方便下面的证明
(rn)(lr)=(ln)(r−ln−l)
先举几个例子:
对于“恰好有
k个人满足条件”的情况,在
i=k的时候计算了一次
对于“恰好有
k+1个人满足条件”的情况,在
i=k的时候算了
(kk+1)次,所以这种情况的系数我要用
−(1k+1)
对于“恰好有
k+2个人满足条件”的情况,在
i=k的时候被算了
(kk+2)次,在
i=k+1的时候被算了
−(k+1k+2)(kk+1)=−(kk+2)(12)次(利用前面描述的公式),前面一共被算了
(kk+2)次,所以其系数应该是
(kk+2)
很神奇是不是?
对于
i=k+t的情况,我来看看这种情况是不是恰好总共被算了
0次:
(kk+t)−(k+1k+t)(kk+1)+(k+2k+t)(kk+2)−(k+3k+t)(kk+3)+...(−1)t(kk+t)
根据我之前说的公式,上述式子可以化简成:
(kk+t)−(kk+t)(1t)+(kk+t)(2t)−(kk+t)(3t)+...(−1)t(kk+t)
咦?开始有点意思了,我把
(kk+t)提出来之后,其实就是这个:
(kk+t)i=0∑t(−1)i(it)
杨辉三角形每一行奇数项的和等于偶数项的和,这个是常识。所以这个系数就等于
0
Wow! Amazing!