组合恒等式

定义

排列

A n m A_{n}^{m} Anm(也可以写成 P n m P_{n}^{m} Pnm)的意思是从 n n n个球中选出 m m m个数出来进行排列。
那么 A n m = n ∗ ( n − 1 ) ∗ ⋯ ∗ ( n − m + 1 ) = n ! ( n − m ) ! A_{n}^{m}=n*(n-1)*\dots*(n-m+1)=\frac{n!}{(n-m)!} Anm=n(n1)(nm+1)=(nm)!n!

组合

C n m C_{n}^{m} Cnm就是从 n n n个数中选 m m m个数组为一个集合,问有多少种不同集合的取法
C n m = A n m m ! C_{n}^{m}=\frac{A_{n}^{m}}{m!} Cnm=m!Anm,上面取出来共有 m ! m! m!中,故除去就好

组合数的求法

定义法

C n m = A n m m ! = n ! ( n − m ) ! ∗ m ! C_{n}^{m}=\frac{A_{n}^{m}}{m!}=\frac{n!}{(n-m)!*m!} Cnm=m!Anm=(nm)!m!n!
n , m n,m n,m比较大的时候可以处理阶乘和逆元

int inv[maxn],fac[maxn];
int fac_inv[maxn];
void init(){
    fac[1]=1;
    fac_inv[0]=fac_inv[1]=inv[0]=inv[1]=1;
    for(int i=2;i<maxn;i++){
        fac[i]=1ll*fac[i-1]*i%mo;
        inv[i]=((mo-mo/i)*inv[mo%i]*1ll)%mo;
    }
    for(int i=2;i<maxn;i++){
        fac_inv[i]=fac_inv[i-1]*inv[i]%mo;
    }
}

递推式

C n m = n ! ( n − m ) ! ∗ m ! = n ! ( n − m + 1 ) ! ∗ ( m − 1 ) ! ∗ n − m + 1 m = C n m − 1 ∗ n − m + 1 m C_{n}^{m}=\frac{n!}{(n-m)!*m!}=\frac{n!}{(n-m+1)!*(m-1)!}*\frac{n-m+1}{m}=C_{n}^{m-1}*\frac{n-m+1}{m} Cnm=(nm)!m!n!=(nm+1)!(m1)!n!mnm+1=Cnm1mnm+1
递推式一般用于 n n n很大, m m m很小的情况

杨辉三角

C n m = n ! ( n − m ) ! ∗ m ! = ( n − 1 ) ! ∗ ( m + n − m ) ( n − m ) ! ∗ m ! = ( n − 1 ) ! ( n − m ) ! ∗ ( m − 1 ) ! + ( n − 1 ) ! ( n − m − 1 ) ! ∗ m ! = C n − 1 m − 1 + C n − 1 m C_{n}^{m}=\frac{n!}{(n-m)!*m!}=\frac{(n-1)!*(m+n-m)}{(n-m)!*m!}=\frac{(n-1)!}{(n-m)!*(m-1)!}+\frac{(n-1)!}{(n-m-1)!*m!}=C_{n-1}^{m-1}+C_{n-1}^{m} Cnm=(nm)!m!n!=(nm)!m!(n1)!(m+nm)=(nm)!(m1)!(n1)!+(nm1)!m!(n1)!=Cn1m1+Cn1m
时间复杂度是 O ( n 2 ) O(n^2) O(n2),通常用于模数不是质数的时候,也就是处理不了逆元,来恶心你的时候。

性质

C n m = C n n − m C_{n}^{m}=C_{n}^{n-m} Cnm=Cnnm
本质上是从 n n n个当中选 m m m个,留下 n − m n-m nm个,我们可以看作选 n − m n-m nm个,留 m m m个出来

C n + m + 1 m = ∑ i = 0 i < = m C n + i i C_{n+m+1}^{m}=\sum_{i=0}^{i<=m}C_{n+i}^{i} Cn+m+1m=i=0i<=mCn+ii
由杨辉三角可得 C n + m + 1 m = C n + m m + C n + m m − 1 C_{n+m+1}^{m}=C_{n+m}^{m}+C_{n+m}^{m-1} Cn+m+1m=Cn+mm+Cn+mm1
C n + m m − 1 = C n + m − 1 m − 1 + C n + m − 1 m − 2 C_{n+m}^{m-1}=C_{n+m-1}^{m-1}+C_{n+m-1}^{m-2} Cn+mm1=Cn+m1m1+Cn+m1m2
C n + m − 1 m − 2 C_{n+m-1}^{m-2} Cn+m1m2又可以分解
最后 C n + 2 1 = C n + 1 1 + C n + 1 0 C_{n+2}^{1}=C_{n+1}^{1}+C_{n+1}^{0} Cn+21=Cn+11+Cn+10
C n + 1 0 = C n 0 C_{n+1}^{0}=C_{n}^{0} Cn+10=Cn0
得证

C n m ∗ C m r = C n r ∗ C n − r m − r C_{n}^{m}*C_{m}^{r}=C_{n}^{r}*C_{n-r}^{m-r} CnmCmr=CnrCnrmr
先从 n n n个当中选 m m m个,在从 m m m中选 r r r个就相当于 n n n个当中选 r r r个,再从 n − r n-r nr个当中选 m − r m-r mr个补到 m m m个,如果不能理解直接拆开乘起来就完事了

∑ i = 0 i < = n C n i ∗ x i = ( 1 + x ) n \sum_{i=0}^{i<=n}C_{n}^{i}*x^i=(1+x)^n i=0i<=nCnixi=(1+x)n
二项式定理直接搞

∑ i = 0 i < = n C n i ∗ ( − 1 ) i = 0 \sum_{i=0}^{i<=n}C_{n}^{i}*(-1)^i=0 i=0i<=nCni(1)i=0
在四中将 x = − 1 x=-1 x=1带进去就好了

C n 1 + C n 3 + ⋯ = C n 0 + C n 2 + ⋯ = 2 n − 1 C_{n}^{1}+C_{n}^{3}+\dots=C_{n}^{0}+C_{n}^{2}+\dots=2^{n-1} Cn1+Cn3+=Cn0+Cn2+=2n1
x = 1 x=1 x=1代入四式
得到的相减,然后得到 2 ∗ ( C n 0 + C n 2 …   ) = 2 n 2*(C_{n}^{0}+C_{n}^{2}\dots)=2^{n} 2(Cn0+Cn2)=2n
然后就可以得到六式

C n + m r = ∑ i = 0 i < = m i n ( n , m , r ) C n i ∗ C m r − i C_{n+m}^{r}=\sum_{i=0}^{i<=min(n,m,r)}{C_{n}^{i}*C_{m}^{r-i}} Cn+mr=i=0i<=min(n,m,r)CniCmri
n + m n+m n+m个数分为 n n n个数和 m m m个数一组,即可证明

m ∗ C n m = n ∗ C n − 1 m − 1 m*C_{n}^{m}=n*C_{n-1}^{m-1} mCnm=nCn1m1
1:暴力拆开相乘即可

∑ i = 0 i < = n ( C n i ∗ i ) = n ∗ 2 n − 1 \sum_{i=0}^{i<=n}({C_{n}^{i}*i})=n*2^{n-1} i=0i<=n(Cnii)=n2n1
= ∑ i = 0 i < = n ( n ! i ! ∗ ( n − i ) ! ∗ i ) =\sum_{i=0}^{i<=n}(\frac{n!}{i!*(n-i)!}*i) =i=0i<=n(i!(ni)!n!i)
= ∑ i = 0 i < = n ( n ∗ ( n − 1 ) ! ( i − 1 ) ! ∗ ( n − i ) ! ) =\sum_{i=0}^{i<=n}(n*\frac{(n-1)!}{(i-1)!*(n-i)!}) =i=0i<=n(n(i1)!(ni)!(n1)!)
= n ∗ ∑ i = 0 i < = n ( ( n − 1 ) ! ( i − 1 ) ! ∗ ( n − i ) ! ) =n*\sum_{i=0}^{i<=n}(\frac{(n-1)!}{(i-1)!*(n-i)!}) =ni=0i<=n((i1)!(ni)!(n1)!)
= n ∗ ∑ i = 0 i < n ( C n − 1 i ) =n*\sum_{i=0}^{i<n}(C_{n-1}^{i}) =ni=0i<n(Cn1i)
= n ∗ 2 n − 1 =n*2^{n-1} =n2n1

十and十一

∑ i = 0 n ( n i ) i 2 = n ( n + 1 ) 2 n − 2 \sum_{i=0}^{n}{n\choose i}i^2=n(n+1)2^{n-2} i=0n(in)i2=n(n+1)2n2
仍然可以每个球分开算贡献。将一个选球方案中右数第 i ( 1 ≤ i ) i(1\le i) i(1i) 个球的权值设置为 i 2 − ( i − 1 ) 2 = 2 i − 1 i^2-(i-1)^2=2i-1 i2(i1)2=2i1 即可。则左式应当等于
∑ i = 1 n 2 i − 1 ∑ x = 0 n − i ( n − i x ) ( 2 x + 1 ) \sum_{i=1}^{n}2^{i-1}\sum_{x=0}^{n-i}{n-i\choose x}(2x+1) i=1n2i1x=0ni(xni)(2x+1)
对于某一个 i i i ,计算里面一个求和,用 2.3.集合大小 的结论得知
∑ x = 0 n − i ( n − i x ) ( 2 x + 1 ) = ( n − i + 1 ) 2 n − i \sum_{x=0}^{n-i}{n-i\choose x}(2x+1)=(n-i+1)2^{n-i} x=0ni(xni)(2x+1)=(ni+1)2ni
然后刚好和 2 i − 1 2^{i-1} 2i1 合在一起成为 2 n − 1 2^{n-1} 2n1 了,妙哉!故左式应当为
2 n − 1 ∑ i = 1 n ( n − i + 1 ) = n ( n + 1 ) 2 n − 2 2^{n-1}\sum_{i=1}^{n}(n-i+1)=n(n+1)2^{n-2} 2n1i=1n(ni+1)=n(n+1)2n2
得证。 Q . E . D . \tt Q.E.D. Q.E.D.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值