ACM中的组合数学基础

组合数学是数学的一个重要分支,在ACM竞赛中占有极大的比重

常用公式

C n m = n ! m ! × ( n − m ) ! C_n^m=\dfrac{n!}{m!\times(n-m)!} Cnm=m!×(nm)!n! , A n m = n ! ( n − m ) ! A_n^m=\dfrac{n!}{(n-m)!} Anm=(nm)!n!

C n m = C n − 1 m + C n − 1 m − 1 C_n^m=C_{n-1}^m+C_{n-1}^{m-1} Cnm=Cn1m+Cn1m1

C m m + C m + 1 m + . . . + C m + n m = C m + n + 1 m + 1 C_m^m+C_{m+1}^m+...+C_{m+n}^m=C_{m+n+1}^{m+1} Cmm+Cm+1m+...+Cm+nm=Cm+n+1m+1

C n 0 + C n + 1 1 + . . . + C n + k k = C n + k + 1 k C_n^0+C_{n+1}^1+...+C_{n+k}^k=C_{n+k+1}^{k} Cn0+Cn+11+...+Cn+kk=Cn+k+1k

C 2 n 2 = 2 C n 2 + n 2 C_{2n}^2=2C_n^2+n^2 C2n2=2Cn2+n2

常见情况

  • n n n m m m盒子: A n + m − 1 n + m − 1 A_{n+m-1}^{n+m-1} An+m1n+m1
    球相同:除以 A n n A_n^n Ann
    盒子相同:除以 A m − 1 m − 1 A_{m-1}^{m-1} Am1m1

  • n n n个人站一排: A n n A_{n}^n Ann
    n n n个人站一圈: A n n / n = A n − 1 n − 1 A_{n}^n/n=A_{n-1}^{n-1} Ann/n=An1n1

  • n n n m m m女站一排(相当于 n + m n+m n+m位置选 n n n个): C n + m n C_{n+m}^{n} Cn+mn
    n n n m m m女站一圈: P o l y a Polya Polya计数

  • 男生不能站在一起,插空法
    男生必须站在一起,捆绑法

  • k k k个元素的无限集取r个的全排列: K r K^r Kr
    k k k个元素的无限集取r个的组合数: C k + r − 1 r C_{k+r-1}^r Ck+r1r
    k k k个元素的无限集取r个且每个元素至少有一个的组合数: C r − 1 k − 1 C_{r-1}^{k-1} Cr1k1

  • 错排公式: [ n ! / e + 0.5 ] [n!/e+0.5] [n!/e+0.5]

  • ( 0 , 0 ) (0,0) (0,0)走到 ( n , m ) (n,m) (n,m):(只能往上或往右)的方案数 C n + m n C_{n+m}^n Cn+mn

  • n n n个点一圈 m m m种颜色,两个相邻点颜色不同: ( − 1 ) n ∗ ( m − 1 ) + ( m − 1 ) n (-1)^n*(m-1)+(m-1)^n (1)n(m1)+(m1)n

  • n n n朵花一排, 有 m m m种颜色, 涂色不能有相邻花同种颜色, 问恰好使用k种颜色的方案数
    A x = C k x ∗ x ∗ ( x − 1 ) n − 1 A_x=C_k^x*x*(x-1)^{n-1} Ax=Ckxx(x1)n1
    a n s = C m k ∗ ( A k − A k − 1 + A k − 2 . . . + ( − 1 ) k A 0 ) ans=C_m^k*(A_k-A_{k-1}+A_{k-2}...+(-1)^kA_0) ans=Cmk(AkAk1+Ak2...+(1)kA0)

  • 任意个人,每个人有 1 2 \frac{1}{2} 21的概率来或不来,来偶数个人的概率为 1 2 \frac{1}{2} 21,奇数 1 2 \frac{1}{2} 21

斐波那契数列

  • 满足递推方程 F i = F i − 1 + F i − 2 , i ≥ 3 ; F 1 = F 2 = 1 F_{i} = F_{i - 1} + F_{i - 2},i \geq 3;F_{1} = F_{2} = 1 Fi=Fi1+Fi2,i3;F1=F2=1,的数列 { F n } \left\{ F_{n} \right\} {Fn}称为斐波那契数列, F n F_{n} Fn为斐波那契数。

  • 斐波那契数列的通项公式为 F n = 1 5 [ ( 1 + 5 2 ) n − ( 1 − 5 2 ) n ] F_{n} = \frac{1}{\sqrt{5}}\left\lbrack \left( \frac{1 + \sqrt{5}}{2} \right)^{n} - \left( \frac{1 - \sqrt{5}}{2} \right)^{n} \right\rbrack Fn=5 1[(21+5 )n(215 )n]

  • F n ≡ 276601605 ( 69150401 3 n − 30849599 7 n ) ( m o d   ( 1 0 9 + 9 ) ) F_n≡276601605(691504013^n-308495997^n)(mod\ (10^9+9)) Fn276601605(691504013n308495997n)(mod (109+9))

  • 在这里插入图片描述

Catalan数

  • Catalan数满足递推方程 C n = ∑ k = 0 n − 1 C k C n − k − 1 , n ≥ 2 ; C 0 = C 1 = 1 C_{n} = \sum_{k = 0}^{n - 1}{C_{k}C_{n - k-1}},n \geq 2;C_{0} = C_{1} = 1 Cn=k=0n1CkCnk1,n2;C0=C1=1

  • 前几个Catalan数为1,1,2,5,14,42,132,429,1430,4862

  • Catalan数的通项公式为 C n = C 2 n n n + 1 = C 2 n n − C 2 n n − 1 C_{n} = \frac{C_{2n}^{n}}{n + 1} = C_{2n}^{n} - C_{2n}^{n - 1} Cn=n+1C2nn=C2nnC2nn1

  • Catalan数的另一个递推公式为 C n = 4 n − 2 n + 1 C n − 1 C_{n} = \frac{4n - 2}{n + 1}C_{n - 1} Cn=n+14n2Cn1

第一类Stirling数

  • 多项式 [ x ] n = x ( x − 1 ) ( x − 2 ) ⋅ ⋅ ⋅ ( x − n + 1 ) \left\lbrack x \right\rbrack_{n} = x\left( x - 1 \right)\left( x - 2 \right) \cdot \cdot \cdot \left( x - n + 1 \right) [x]n=x(x1)(x2)(xn+1)中常数项和 x , x 2 , x 3 , ⋅ ⋅ ⋅ , x n x,x^{2},x^{3}, \cdot \cdot \cdot ,x^{n} x,x2,x3,,xn的系数称为第一类Stirling数,记为 S 1 ( n , k ) , k = 0 , 2 , ⋅ ⋅ ⋅ , n S_{1}\left( n,k \right),k = 0,2, \cdot \cdot \cdot ,n S1(n,k),k=0,2,,n

  • 第一类Stirling数满足 S 1 ( n , n ) = 1 ; S 1 ( n , 0 ) = 0 ; S 1 ( n , n − k ) = ( − 1 ) n M k n , k = 1 , 2 , ⋅ ⋅ ⋅ , n − 1 S_{1}\left( n,n \right) = 1;S_{1}\left( n,0 \right) = 0;S_{1}\left( n,n - k \right) = \left( - 1 \right)^{n}M_{k}^{n},k = 1,2, \cdot \cdot \cdot ,n - 1 S1(n,n)=1;S1(n,0)=0;S1(n,nk)=(1)nMkn,k=1,2,,n1

式中 M k n M_{k}^{n} Mkn表示 { 1 , 2 , ⋅ ⋅ ⋅ , n − 1 } \left\{ 1,2, \cdot \cdot \cdot ,n - 1 \right\} {1,2,,n1}中任意k个不同的自然数乘积之和。

  • 第一类Stirling数满足递归关系 { S 1 ( n + 1 , k ) = S 1 ( n , k − 1 ) − n S 1 ( n , k ) , n ≥ 0 , k > 0 S 1 ( n , n ) = 1 , S 1 ( n , 0 ) = 0 \left\{ \begin{matrix} S_{1}\left( n + 1,k \right) = S_{1}\left( n,k - 1 \right) - nS_{1}\left( n,k \right),n \geq 0,k > 0 \\ S_{1}\left( n,n \right) = 1,S_{1}\left( n,0 \right) = 0 \\ \end{matrix} \right. {S1(n+1,k)=S1(n,k1)nS1(n,k),n0,k>0S1(n,n)=1,S1(n,0)=0

第二类Stirling数

  • 多项式 [ x ] n = x ( x − 1 ) ( x − 2 ) ⋅ ⋅ ⋅ ( x − n + 1 ) \left\lbrack x \right\rbrack_{n} = x\left( x - 1 \right)\left( x - 2 \right) \cdot \cdot \cdot \left( x - n + 1 \right) [x]n=x(x1)(x2)(xn+1) x n = ∑ k = 0 n S 2 ( n , k ) [ x ] k x^{n} = \sum_{k = 0}^{n}{S_{2}\left( n,k \right)\left\lbrack x \right\rbrack_{k}} xn=k=0nS2(n,k)[x]k,称 S 2 ( n , k ) S_{2}\left( n,k \right) S2(n,k)为第二类Stirling数。

  • 第二类Stirling数满足 S 2 ( n , k ) = 1 k ! ∑ i = 0 k − 1 ( − 1 ) i C k i ( k − i ) n S_{2}\left( n,k \right) = \frac{1}{k!}\sum_{i = 0}^{k - 1}{\left( - 1 \right)^{i}C_{k}^{i}\left( k - i \right)^{n}} S2(n,k)=k!1i=0k1(1)iCki(ki)n

  • 第二类Stirling数满足递归关系 { S 2 ( n + 1 , k ) = S 2 ( n , k − 1 ) + k S 2 ( n , k ) , n ≥ 0 , k ≥ 1 S 2 ( 0 , 0 ) = 1 , S 2 ( n , 0 ) = 0 \left\{ \begin{matrix} S_{2}\left( n+1,k \right) = S_{2}\left( n,k - 1 \right) + kS_{2}\left( n,k \right),n \geq 0,k \geq 1 \\ S_{2}\left( 0,0 \right) = 1,S_{2}\left( n,0 \right) = 0 \\ \end{matrix} \right. {S2(n+1,k)=S2(n,k1)+kS2(n,k),n0,k1S2(0,0)=1,S2(n,0)=0

  • 第二类Stirling数可以用卷积的方法求,根据(2)得 S 2 ( n , k ) = ∑ i = 0 k − 1 ( − 1 ) i i ! ( k − i ) n ( k − i ) ! S_2(n,k)=\sum_{i=0}^{k-1}\frac{(-1)^i}{i!}\frac{(k-i)^n}{(k-i)!} S2(n,k)=i=0k1i!(1)i(ki)!(ki)n ,对 a i = ( − 1 ) i i ! a_i=\frac{(-1)^i}{i!} ai=i!(1)i b i = i n i ! b_i=\frac{i^n}{i!} bi=i!in 卷积即可

  • k n = ∑ i = 1 k ( i k ) S ( n , i ) i ! k^n=∑_{i=1}^k(^k_i)S(n,i)i! kn=i=1k(ik)S(n,i)i!

分拆数

  • 称正整数n分解为r个正整数和的个数为n分解成r的分拆数,记为 P r ( n ) P_{r}\left( n \right) Pr(n)

  • P 1 ( n ) P_{1}\left( n \right) P1(n)=1 P n ( n ) P_{n}\left( n \right) Pn(n)=1 P n − 1 ( n ) P_{n - 1}\left( n \right) Pn1(n)=1 P n − 2 ( n ) P_{n - 2}\left( n \right) Pn2(n)=2 P n − 3 ( n ) P_{n - 3}\left( n \right) Pn3(n)=3

  • P 2 ( n ) = ⌈ n − 1 2 ⌉ , n ≥ 2 P_{2}\left( n \right) = \left\lceil \frac{n - 1}{2} \right\rceil,n \geq 2 P2(n)=2n1,n2

  • P r ( n ) = P 1 ( n − r ) + P 2 ( n − r ) + ⋅ ⋅ ⋅ + P r ( n − r ) P_{r}\left( n \right) = P_{1}\left( n - r \right) + P_{2}\left( n - r \right) + \cdot \cdot \cdot + P_{r}\left( n - r \right) Pr(n)=P1(nr)+P2(nr)++Pr(nr)

分装问题

n n n个球放入 r r r个盒子称为分装问题

  • 相同球和相同盒子, n ≥ r n≥r nr

    • 没有空盒子: P r ( n − r ) P_{r}\left( n - r \right) Pr(nr)
    • 可以有空盒子: ∑ k = 1 r P k ( n ) \sum_{k = 1}^{r}{P_{k}\left( n \right)} k=1rPk(n)
  • 相同球和不同盒子

    • 没有空盒子: C n − 1 r − 1 C_{n - 1}^{r - 1} Cn1r1
    • 可以有空盒子: C n + r − 1 n C_{n + r - 1}^{n} Cn+r1n
  • 不同球和相同盒子

    • 没有空盒子: S 2 ( n , r ) S_{2}\left( n,r \right) S2(n,r)
    • 可以有空盒子: ∑ k = 1 r S 2 ( n , k ) \sum_{k = 1}^{r}{S_{2}\left( n,k \right)} k=1rS2(n,k)
  • 不同球和不同盒子

    • 没有空盒子: r ! S 2 ( n , r ) r!S_{2}\left( n,r \right) r!S2(n,r)
    • 可以有空盒子: r n r^{n} rn
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值