组合数学
排列组合
二项式定理
常见组合数
-
在 \(S=\{n_1\cdot a_1,n_2\cdot a_2,\dots,n_k\cdot a_k\}\) 集合中选出 \(r\) 个元素的方案数:
大概是容斥一下,咕咕咕
-
错排方案数:\(f(n)=(n-1)(f(n-1)+f(n-2))\)。
-
圆排列:记 \(Q_n^m\) 表示周长为 \(n\) 的圆上放置 \(k\) 个数的方案数。
\[Q_n^m=\dfrac{A_n^m}{m}=\dfrac{n!}{r\times(n-r)!} \]
组合数常见性质
-
二项式定理中 \(a=b=1\) 的特殊情况:
\[\binom{n}{0}+\binom{n}{1}+\cdots+\binom{n}{n}=\sum_{i=0}^n\binom{n}{i}=2^n \] -
二项式定理中 \(a=1,b=0\) 的情况:(式子中 \(n=0\) 时答案为 \(1\))
\[\sum_{i=0}^m \binom{n}{i}\binom{m}{i} = \binom{m+n}{m}\ \ \ (n \geq m) \] -
拆组合数的式子:
\[\sum_{i=0}^n\binom{n}{i}^2=\binom{2n}{n} \] -
\[ \sum_{l=0}^n\binom{l}{k} = \binom{n+1}{k+1} \]
卡特兰数
如 \(n\) 个点构成的二叉树个数、凸多边形的三角形划分方案数、\(1-n\) 序列出栈序列等问题都属于卡特兰数。
卡特兰数前几项为 \(1,1,2,5,14,42,132,\dots\)。
常见计算公式:
第二类斯特林数
第二类斯特林数 \(\begin{Bmatrix}n\\ k\end{Bmatrix}\),也可记做 \(S(n,k)\),表示将 \(n\) 个互不相同的元素划分为 \(k\) 个互不区分的子集的方案数。
递推式
意义是新开一个集合或将元素加入原来集合中的一个,初始值 \(S(n,0)=[n=0]\)。
通项公式
用容斥计算,记 \(F(n,k)\) 表示将 \(n\) 个元素放到 \(k\) 个不同集合中,且允许空集的方案数;\(G(n,k)\) 表示不允许空集的方案数,有:
由于 \(k\) 个集合都相同,所以上面会算重 \(k!\) 次,则通项公式为:
行、列?咕咕咕
分拆数(拆分数)
将一个数 \(n\) 拆为 \(k\) 个递增的正整数的和,方案数记为 \(p(n,k)\),有递推公式:
上面公式的含义是拆分出来的数中有 \(i\) 个非 \(0\),下面的的式子是加上一个 \(1\) 或者每个数加上 \(1\)。
P6189 [NOI Online #1 入门组] 跑步 用根号分治
奇奇怪怪的组合计数
n 个点的联通图数量
设 \(dp[i]\) 表示 \(i\) 个点的时候的答案。
我们假设已经计算好了 \([1,n-1]\) 的情况,现在要将第 \(n\) 号点加入。
“正难则反”,我们考虑 \(n\) 个点的非联通图的数量。
假定 \(n\) 号点与之前的 \(n-1\) 个点都不连通,那么显然这是一个非联通图。
同时枚举 \(1\le j\le n-1\) ,使 \(j-1\) 个节点连为 \(1\) 个大小为 \(j\) 的连通块,选出的方案数为 \(\binom{n-1}{j-1}\) ,选出后的连通块方案数有 \(dp[j]\) 种。
剩下的 \(n-j\) 个点随便连边,由 \(\binom{n-j}{2}\) 种情况,而且这些点与前面 \(j\) 个点没有任何变相连,保证不连通。
于是递推方程为: