组合数学的那些事
一些经典的排列组合问题
- 可重复排列
从 \(n\) 个不同元素中选取 \(m\) 个元素(同一元素允许重复取出),按照一定顺序排成一列,有 \(n ^ m\) 种取法。
- 可重复的组合
从 \(n\) 个不同元素种取 \(m\) 个元素(同一元素允许重复取出)并成一组,有 \(\dbinom{n + m - 1}{m}\) 种取法。
证明:转化为原组合定义。
- 不全相异元素的全排列
如果 \(n\) 个元素中,分别有 \(n_1, n_2, ..., n_k\) 个元素相同,且 \(n_1 + n_2 + \cdots + n_k = n\),则这 \(n\) 个元素的全排列个数记作 \(\dbinom{n}{n_1\ n_2\ \cdots \ n_k} = \dfrac{n!}{n_1!n_2! \cdots n_k!}\)
证明:类似于组合的证明
- 多组组合
把 \(n\) 个相异元素分为 \(k(k \le n)\) 个按照一定顺序排列的组,其中第 \(i\) 组有 \(n_i\) 个元素 \((i = 1, 2, \cdots, k, n_1 + n_2 + \cdots + n_k = n)\),则不同的分组方法种数为 \(\dbinom{n}{n_1 \ n_2 \ \cdots \ n_k} = \dfrac{n!}{n_1!n_2! \cdots n_k!}\)
证明:用组合数选取获类似于上面那个的证明。
- 圆排列
将 \(n\) 个不同元素不分首尾排成一圈,其排列种数为 \((n - 1)!\)
证明:考虑到将一个序列首尾相接成一个圆,那么将这个圆旋转一周所对应的序列和原序列等价但又算入了全排列,因此排列个数为 \(\dfrac{n!}{n} = (n - 1)!\)
- 项链数
将 \(n\) 粒不同的珠子用线串成一副项链,则得到的不同项链数
证明:\(n = 1, 2\)时显然。\(n \ge 3\) 时考虑到将项链正着或反着来看是一致的即圆排列中顺时针逆时针的所有序列均一致,故个数为圆排列的一半。
记一道题
\(6\) 位女同学和 \(15\) 位男同学围成一圈跳集体舞(每名同学不同),要求每两名女同学之间至少有两名男同学,那么一共有多少种不同的围圈跳舞的方法?
首先可以将一个女同学和两个男同学配对,将这两个男同学放在这个女同学两边。那么这样形成六个组的方案为 \(A^{12}_{15}\),接下来将剩下的三个男生单独看成一组,那么这九组构成圆排列的方案为 \(8!\),根据乘法原理总方案为 \(A^{12}_{15} \cdot 8!\)
再记一道题 51nod 1677 treecnt
题意:给你一颗大小为 \(n(n \le 10 ^ 5)\) 的树,你需要选出 \(k(k \le n)\) 个点,找到最少的边使得他们联通,求这些最少的边数之和。
直接考虑选那些点再算边很不好做,考虑每条边对答案的贡献。枚举每一条边,设它左边的点数为 \(x\) 右边的点数为 \(y\),显然这个东西可以 \(dfs\) 预处理出来。那我们考虑选择这条边的数量有那些,如果这 \(k\) 个点都在左边或者都在右边是不需要经过当前边的,但是如果这 \(k\) 个点分布在两个集合就一定需要经过这条边,所以这条边的贡献就用总方案减去不合法的方案就好了,即 \(\dbinom{n}{k} - \dbinom{x}{k} - \dbinom{y}{k}\).
一些组合数恒等式:
二项式定理:
- 扩展
令 \(y = 1\):
对两边同时求导可得:
再令 \(x = 1\):
通过类似的方法可以求 \(\sum\limits_{k = 0} ^ n k ^ 2 \dbinom{n}{k}\) 和 \(\sum\limits_{k = 0} ^ n k ^ 3 \dbinom{n}{k}\) 以及更高次的级数。