组合数学
加法原理和乘法原理
分类相加 分步相乘
排列数
讲顺序
\[A_{n}^{m}=\frac{n!}{(n-m)!}\,\,\,\,\,\,\, (m\leq n,m与n均为自然数)
\]
组合数
不讲顺序
\[\dbinom{n}{m}=C_{n}^{m}=\frac{A_n^m}{m!}=\frac{n!}{m!(n-m)!}
\]
显然的公式:
\[\sum_{k=0}^n\dbinom{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)^i\dbinom{m}{m-i}=\dbinom{m+n}{m}\,\,\,(n\geq m)
\]
\[\sum_{i=0}^m\dbinom{n}{i}^2=\dbinom{2n}{n}
\]
\[\sum_{i=0}^ni\dbinom{n}{i}=n2^{n-1}
\]
\[\sum_{i=0}^ni^2\dbinom{n}{i}=n(n+1)2^{n-2}
\]
\[\sum_{l=0}^n\dbinom{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}^n\dbinom{n-i}{i}=F_{n+1}
\]
二项式定理
\[(a+b)^n=\sum_{i=0}^n\dbinom{n}{i}a^{n-i}b^{i}
\]
范德蒙德卷积
\[\dbinom{n+m}{k}=\sum_{i=0}^k\dbinom{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)^k\dbinom{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}^n\dbinom{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]
\]