ACM中的组合数学基础

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

常用公式

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

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

Cmm+Cm+1m+...+Cm+nm=Cm+n+1m+1C_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

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

C2n2=2Cn2+n2C_{2n}^2=2C_n^2+n^2C2n2=2Cn2+n2

常见情况

  • nnnmmm盒子:An+m−1n+m−1A_{n+m-1}^{n+m-1}An+m1n+m1
    球相同:除以AnnA_n^nAnn
    盒子相同:除以Am−1m−1A_{m-1}^{m-1}Am1m1

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

  • nnnmmm女站一排(相当于n+mn+mn+m位置选nnn个):Cn+mnC_{n+m}^{n}Cn+mn
    nnnmmm女站一圈:PolyaPolyaPolya计数

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

  • kkk个元素的无限集取r个的全排列:KrK^rKr
    kkk个元素的无限集取r个的组合数:Ck+r−1rC_{k+r-1}^rCk+r1r
    kkk个元素的无限集取r个且每个元素至少有一个的组合数:Cr−1k−1C_{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):(只能往上或往右)的方案数Cn+mnC_{n+m}^nCn+mn

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

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

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

斐波那契数列

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

  • 斐波那契数列的通项公式为Fn=15[(1+52)n−(1−52)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\rbrackFn=51[(21+5)n(215)n]

  • Fn≡276601605(691504013n−308495997n)(mod (109+9))F_n≡276601605(691504013^n-308495997^n)(mod\ (10^9+9))Fn276601605(691504013n308495997n)(mod (109+9))

  • 在这里插入图片描述

Catalan数

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

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

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

  • Catalan数的另一个递推公式为Cn=4n−2n+1Cn−1C_{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,x2,x3,⋅⋅⋅,xnx,x^{2},x^{3}, \cdot \cdot \cdot ,x^{n}x,x2,x3,,xn的系数称为第一类Stirling数,记为S1(n,k),k=0,2,⋅⋅⋅,nS_{1}\left( n,k \right),k = 0,2, \cdot \cdot \cdot ,nS1(n,k),k=0,2,,n

  • 第一类Stirling数满足S1(n,n)=1;S1(n,0)=0;S1(n,n−k)=(−1)nMkn,k=1,2,⋅⋅⋅,n−1S_{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 - 1S1(n,n)=1;S1(n,0)=0;S1(n,nk)=(1)nMkn,k=1,2,,n1

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

  • 第一类Stirling数满足递归关系{S1(n+1,k)=S1(n,k−1)−nS1(n,k),n≥0,k>0S1(n,n)=1,S1(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)xn=∑k=0nS2(n,k)[x]kx^{n} = \sum_{k = 0}^{n}{S_{2}\left( n,k \right)\left\lbrack x \right\rbrack_{k}}xn=k=0nS2(n,k)[x]k,称S2(n,k)S_{2}\left( n,k \right)S2(n,k)为第二类Stirling数。

  • 第二类Stirling数满足S2(n,k)=1k!∑i=0k−1(−1)iCki(k−i)nS_{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数满足递归关系{S2(n+1,k)=S2(n,k−1)+kS2(n,k),n≥0,k≥1S2(0,0)=1,S2(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)得 S2(n,k)=∑i=0k−1(−1)ii!(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 ,对 ai=(−1)ii!a_i=\frac{(-1)^i}{i!}ai=i!(1)ibi=ini!b_i=\frac{i^n}{i!}bi=i!in 卷积即可

  • kn=∑i=1k(ik)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的分拆数,记为Pr(n)P_{r}\left( n \right)Pr(n)

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

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

  • Pr(n)=P1(n−r)+P2(n−r)+⋅⋅⋅+Pr(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)

分装问题

nnn个球放入rrr个盒子称为分装问题

  • 相同球和相同盒子,n≥rn≥rnr

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值