组合数变换
Posted chasedeath
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合数变换相关的知识,希望对你有一定的参考价值。
基本变换
递推式
[ C(n,m)=C(n-1,m-1)+C(n-1,m)]
[ ]
[ ]
组合数完全累和
[ sum_{i=0}^n C(n,i) =2^n]
[ ]
[ ]
$sum -> C() $型
我们熟知的有
[ sum_{i=1}^{n}1=n = C(n,1)]
[ sum _{i=1}^{n} sum_{j=i+1}^{n} 1= sum_{i=1}^{n-1}i=n cdot (n-1)/2]
更一般的
[underbrace {sum sum ... sum} 1 =C(n,k)]
[ (k个sum) ]
[ ]
[ ]
$ ... ?cdot C(n,i)$型
$ sum i cdot C(n,i) $
$ = sum {i cdot frac{n!}{i! cdot (n-i)!}}$
$ = sum { frac{n!}{(i-1)! cdot (n-i)!}}$
(=sum {n cdot frac {(n-1)!} {(i-1)! cdot (n-i)!}})
(=ncdot sum C(n-1,i-1))
同理的
[sum i*(i-1)*C(n,i)=n cdot (n-1) cdot sum C(n-2,i-2)]
带入还能得到
[sum i^2 cdot C(n,i) = n cdot (n-1) cdot sum C(n-2,i-2)+n cdot sum C(n-1,i-1) ]
更一般的,可以表示成
[ sum C(i,k) cdot C(n,i) =C(n,k) cdot sum C(n-k,i-k)]
[ ]
[ ]
多组合数相乘型
(sum_{i=0}^{k} C(n,i)*C(m,k-i) = C(n+m,k))
其实就是两个组合问题的组合,可以直接通过实际意义得到
[ ]
[ ]
Lucas定理
$ C(n,m) mod p = C(n mod p,m mod p) cdot C(n / p, m/p) mod p$
预处理阶乘逆元后,可以用于解决模数较小而(n,m)较大的组合数问题
[ ]
[ ]
组合数前缀和
令 (S(n,m)=sum_{i=0}^{m} C(n,i))
(S(n,m)+S(n,m+1))
(=sum_{i=0}^{m}(C(n,i)+C(n,i+1))+C(n,0))
(=sum C(n+1,i+1)+C(n,0)) (带入递推公式)
(=S(n+1,m+1))
又(ecause S(n,m)+S(n,m+1)=2*S(n,m+1)-C(n,m+1))
( herefore S(n,m)=2*S(n-1,m)-C(n-1,m))
(待补。。。)
以上是关于组合数变换的主要内容,如果未能解决你的问题,请参考以下文章