zoukankan      html  css  js  c++  java
  • 组合数公式

    组合数公式


    递推式

    [C(n,m)=C(n-1,m-1)+C(n-1,m) ]


    组合数完全累和

    [sum_{i=0}^n C(n,i) =2^n ]


    奇偶累和

    [sum_0^n (-1)^i C(n,i)=[n=0] ]


    $sumcdotssum ightarrow C() $型

    我们熟知的有

    [sum_{i=1}^{n}1=n = C(n,1) ]

    [sum _{i=1}^{n} sum_{j=i+1}^{n} 1= frac{n(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 icdot (i-1)cdot 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)cdot C(m,k-i) = C(n+m,k))

    其实就是两个组合问题的组合,可以直接通过实际意义得到


    Lucas定理

    $ C(n,m) mod p = C(n mod p,m mod p) cdot C(lfloorfrac{n} {p} floor, lfloor frac{m} {p} floor) 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)=2S(n,m+1)-C(n,m+1))

    ( herefore S(n,m)=2S(n-1,m)-C(n-1,m))

    (待补。。。)

  • 相关阅读:
    Tarjan算法与割点割边
    kmp匹配
    最小表示法
    字典树
    哈希
    网络流入门浅谈
    关于两道搜索的题目
    2020 4.2校内测题解
    LIS最长上升子序列讲解&&洛谷P1439 【模板】最长公共子序列 题解
    浅谈拉格朗日插值公式
  • 原文地址:https://www.cnblogs.com/chasedeath/p/11684722.html
Copyright © 2011-2022 走看看