组合数学

组合数学

加法原理和乘法原理

分类相加 分步相乘

排列数

讲顺序

[A_{n}^{m}=frac{n!}{(n-m)!}\,\,\,\,\,\,\, (mleq n,m与n均为自然数) ]

组合数

不讲顺序

[dbinom{n}{m}=C_{n}^{m}=frac{A_n^m}{m!}=frac{n!}{m!(n-m)!} ]

显然的公式:

[sum_{k=0}^ndbinom{n}{k}=2^n ]

[dbinom{n}{k}=dbinom{n-1}{k}+dbinom{n-1}{k-1} ]

[dbinom{n}{m}=dbinom{n}{m-1} ]

[dbinom{n}{k}=frac{n}{k}dbinom{n-1}{k-1} ]

[dbinom{n}{m}=dbinom{n-1}{m}+dbinom{n-1}{m-1} ]

[sum_{i=0}^n(-1)^idbinom{m}{m-i}=dbinom{m+n}{m}\,\,\,(ngeq m) ]

[sum_{i=0}^mdbinom{n}{i}^2=dbinom{2n}{n} ]

[sum_{i=0}^nidbinom{n}{i}=n2^{n-1} ]

[sum_{i=0}^ni^2dbinom{n}{i}=n(n+1)2^{n-2} ]

[sum_{l=0}^ndbinom{l}{k}=dbinom{n+1}{k+1} ]

[dbinom{n}{r}dbinom{r}{k}=dbinom{n}{k}dbinom{n-k}{r-k} ]

[F_n表示斐波那契数列第n项:\,\,\,\,\,sum_{i=0}^ndbinom{n-i}{i}=F_{n+1} ]

二项式定理

[(a+b)^n=sum_{i=0}^ndbinom{n}{i}a^{n-i}b^{i} ]

范德蒙德卷积

[dbinom{n+m}{k}=sum_{i=0}^kdbinom{n}{i}dbinom{m}{k-i} ]

多重集合的排列

(n)个物品划分为(k)个集合,且每个集合的大小分别为(c_1,c_2,…c_k),且(sum c_i=n)。则其方案数为(frac{n!}{prod c_i!})

现在有若干种相同的物品,每种的个数为(c_i),现在将这些物品排成一排,其方案数为(frac{(sum c_i )!}{prod c_i!})

容斥原理

盒子与球

常用方法

插板法

就是在 (n) 个物品之间插上 (m) 个板,将其分为 (m+1) 组。

捆绑法

在解决对于某几个元素要求相邻的问题时,先整体考虑,将相邻元素视作一个大元素进行排序,然后再考虑大元素内部各元素间顺序的解题策略就是捆绑法。

球相同,盒子不同,不能有空盒

实质是n 个小球分为 m 组(不能空)

插板法解决

[ans=C_{n-1}^{m-1} ]

球相同,盒子不同,可以有空盒

转化为上面的问题,先在每个盒子里装一个球,最后再拿出来

[ans=C_{n+m-1}^{m-1} ]

球不同,盒子不同,可以有空盒

[ans=m^n ]

球不同,盒子相同,不能有空盒

第二类斯特林数(简称S2)的定义为将(n)个物体划分成k个非空的没有区别的集合的方法数,大致就是把(n)个不同的小球放入(m)个相同的盒子中(且盒子不能为空)的方案数。

递推公式为((S2[i][j])表示前 (i)个小球放到前 (j) 个盒子里的方案数):

[S2[i][j]=S2[i−1][j]∗j+S2[i−1][j−1] ]

还有一个公式(容斥原理可以证明):

[S2(n,m)=frac{1}{m!}*sum_{k=0}^m(-1)^kdbinom{m}{k}*(m-k)^n ]

球不同,盒子不同,不能有空盒

就是算S2再消除球的有序性就行了

[ans=m!*S2[n][m] ]

球不同,盒子相同,可以有空盒

由第二类斯特林数得

[ans=sum_{i=1}^{m}S2[n][i] ]

贝尔数(Bell数):第n个Bell数表示集合{1,2,3,...,n}的划分方案数

[B_{n+1}=sum_{k=0}^ndbinom{n}{k}B_k ]

[B_n=sum_{k=1}^nS2(n,k) ]

球相同,盒子相同,可以有空盒

(f[n][m])(n)个球放到(m)个盒子里的方案数

如果只有一个盘子或者没有小球,方案数自然为(1)

如果小球比盒子要少,小球肯定是放不满盒子的,由于盒子相同,可以得到转移(f[i][j]=f[i][i])

如果小球比盒子要多,就分为将盘子放满和没放满两种情况,即(f[i][j]=f[i-j][j]+f[i][j-1])

球相同,盒子相同,不能有空盒

和上面一种有联系,先在每个盒子里放一个球,最后再拿出来

[ans=f[n-m][m] ]

原文地址:https://www.cnblogs.com/wsyunine/p/14477395.html