组合与排列

组合与排列

一、插板法

1、用处:用于求一类相同元素分组的方案数,也可以用于求一类线性不定方程解的组数。

2、求正整数和的组合数目:

  • 题目:有 \(n\) 个完全相同的元素,分为 \(k\) 组,保证每组至少有一个元素,求分配方案?

  • 解法:我们可以考虑把 \(k-1\) 快板子插入到 \(n\) 哥元素两两形成的 \(n - 1\) 哥空里面,又因为是元素是相同的,则答案为 \(C_{n - 1}^{k - 1}\)

  • 其实本质上就是求 \(x_1 + x_2 + ... + x_k = n\) 这个方程的正整数解的组数。

3、求非负整数和的组合数目:

  • 题目:和求正整数和的数目一样,唯一的区别就是我们允许每组可以为空。

  • 解法:由于可能会导致多块板子插入到一个空里面,那么可以借来 \(k\) 个元素,那么 \(n + k\) 个元素就会形成 \(n + k - 1\) 个空,答案则为 \(C_{n + k - 1}^{k - 1} = C_{n + k - 1}^{n}\)

  • 本质上就是求 \(x_1 + x_2 + ... + x_k = n\) 这个方程的非负整数解的组数。

4、求不同下界整数和的组合数目:

  • 题目:和上面两个的区别就是第 \(i\) 组必须分到 \(a_i\) 个元素,且保证 \(\sum a_i \le n\),求方案数?

  • 解法:我们令 \(x_{i}' = x_{i} - a_{i}\),有本质上我们求的是 \(x_1 + x_2 + ... + x_k = n\) 的解的组数,那么转化一下就是 \(x_1' + a_1 + x_2' + a_2 + ... + x_k' + a_k = n\) ,然后就是求 \(x_1' + x_2' + ... + x_k' = n - \sum a_i\) 的非负整数解的组数,答案就是 \(C_{n - \sum a_i + k - 1}^{n - \sum a_i} = C_{n - \sum a_i + k - 1}^{k - 1}\)

5、求不相邻的排列组合数:

  • 题目:\(1\) ~ \(n\)\(n\) 个自然数中选 \(k\) 个。

  • 解法:这 \(k\) 个数中任何两个数都不相邻的组合有 \(C_{n - k + 1}^{k}\)

二、二项式定理

1、二项式展开:\((a + b)^{n} = \sum_{i = 0}^{n}C_{n}^{i}a^{n - i}b^{i}\)

2、推广:\((x_1 + x_2 + ... + x_t)^{n} = \sum_{满足n_1 + n_2 + ... + n_t = n的非负整数解}C_{n}^{n_1}C_{n}^{n_2}...C_{n}^{n_t}x_1^{n_1}x_2^{n_2}...x_t^{n_t}\)

3、其中 \(C_{n}^{n_1}C_{n}^{n_2}...C_{n}^{n_t}\) 就是多项式系数,那么我们可以得到 \(\sum C_{n}^{n_1}C_{n}^{n_2}...C_{n}^{n_t} = t^{n}\)

三、进阶篇

1、多重集的排列数和多重组合数

  • 多重集指的是含有重复元素的广义集合。设 \(S = \left \{ n_1·a_1,n_2·a_2,...,n_k·a_k \right \}\) 表示有 \(n_1\)\(a_1\)\(n_2\)\(a_2\) \(...\) \(n_k\)\(a_k\) 组成的多重集,则\(S\) 的全排列个数为:\(\frac{n!}{\prod_{i=1}^{k}n_i!} = \frac{n!}{n_1!n_2!...n_k!}\) ,相当于把相同元素的排列数除去了。具体的,可以认为有 \(k\) 个不同的球,每个球的数目分别为 \(n_1, n_2,...n_k\),且 \(n = n_1 + n_2 + ... + n_k\) 。求这 \(n\) 个球的全排列数就是多重集的排列数,也叫多重组合数。

2、多重集的组合数1

  • \(S = \left \{ n_1·a_1,n_2·a_2,...,n_k·a_k \right \}\) 表示有 \(n_1\)\(a_1\)\(n_2\)\(a_2\) \(...\) \(n_k\)\(a_k\) 组成的多重集,那么对于整数 \(r(r <= n_i, \forall i \in \left [ 1,k \right ] )\) ,从 \(S\) 中选择 \(r\) 个元素组成一个多重集的方案数就是多重集的组合数 (条件很重要)。这个问题有等价于 \(x_1 + x_2 + ... + x_k = r\) 的非负整数的数目,可用插板法解决,答案则为 \(C_{r + k - 1}^{k - 1}\)

3、多重集的组合数2

  • 和组合数1的区别就是 \(r\) 不一定都小于等于所有的 \(n_i\)

  • 即带限制的线性方程求解:\(\forall i \in \left [ 1, k \right ], x_i \le n_i, \sum_{i = 1}^{k}x_i = r\)

  • 于是我们就可以用容斥来解决:

    \((1)\) 全集:\(\sum_{i = 1}^{k} x_i = r\) 的非负整数解。

    \((2)\) 属性:\(x_i \le n_i\)

  • 我们设满足属性 \(i\) 的集合是 \(S_i\) ,则 \(\bar{S_i}\) 表示不满足属性 \(i\) 的集合,即满足 \(x_i >= n_i + 1\) 的集合,那么答案即为:\(\left | \bigcap_{i=1}^{k}S_i \right | = \left | \cup \right | - \left | \bigcup_{i=1}^{k}\bar{S_i} \right |\)

  • 根据容斥原理得:\(\left | \bigcup_{i=1}^{k}\bar{S_i} \right | = \sum_{i} |\bar{S_i}|-\sum_{i,j} |\bar{S_i} \cap \bar{S_j}| + ... + (-1)^{k-1}|\bigcap_{i=1}^{k}\bar{S_i}| = \sum_{i}C_{r+k-n_i-2}^{k-1}-\sum_{i,j}C_{r+k-n_i-n_j-3}^{k-1}+...+(-1)^{k-1}C_{r-1-\sum_{i=1}^{k}n_i}^{k-1}\),又因为 \(| \bigcup | = C_{r+k-1}^{k-1}\) ,则可以求出解,可以看出 \(k \le 20\) 一般才能求出此解,时间复杂度为:\(k(1<<k)\)

四、圆排列

1、定义:\(n\) 个人围成一圈,我们记所有的排列数为 \(Q_{n}^{n}\),记 \(A_{n}^{n}\)\(n\) 个人排成一排的所有排列数。那么我们可以把圈看成排,相当于从不同位置断开,所以有 \(Q_{n}^{n} * n = A_{n}^{n} \Rightarrow Q_{n}^{n} = \frac{A_{n}^{n}}{n}=(n-1)!=A_{n-1}^{n-1}\)

2、由此我们可以推出:\(Q_{n}^{r}=\frac{A_{n}^{r}}{r}=\frac{n!}{r(n-r)!}\)

五、组合数性质和二项式推论

1、\(C_{n}^{m} = C_{n}^{n-m}\)

2、\(C_{n}^{k}=\frac{k}{n}C_{n-1}^{k-1}\)

3、\(C_{n}^{m}=C_{n-1}^{m}+C_{n-1}^{m-1}\)

4、\(\sum_{i=0}^{n}C_{n}^{i}=2^n\)

5、\(\sum_{i=0}^{n}(-1)^iC_{n}^{i}=[n=0]\)

6、\(\sum_{i=0}^{m}C_{n}^{i}C_{m}^{m-i}=C_{n+m}^{m}(m \le n)\)

7、\(\sum_{i=0}^{n}(C_{n}^{i})^2=C_{2n}^{n}(式子6的特殊形式,即n=m)\)

8、\(\sum_{i=0}^{n}iC_{n}^{i}=n2^{n-1}(带权式子)\)

9、\(\sum_{i=0}^{n}i^2C_{n}^{i}=n(n+1)2^{n-2}\)

10、\(\sum_{l=0}^{n}C_{l}^{k}=C_{n+1}^{k+1}\)

11、\(C_{n}^{r}C_{r}^{k}=C_{n}^{k}C_{n-k}^{r-k}\)

12、\(\sum_{i=0}^{n}C_{n-i}^{i}=F_{n+1}(其中F为斐波那契函数)\)

六、二项式反演

1、我们令 \(f_n\) 为表示恰好使用 \(n\) 个不同元素形成的特定结构的方案数,\(g_n\) 表示从 \(n\) 个元素里面选 \(i \ge 0\) 个元素形成特定结构的总方案数。

2、若已知 \(f_n\)\(g_n\) ,则有:\(g_n = \sum_{i=0}^{n}C_{n}^{i}*f_i\)

3、若已知 \(g_n\)\(f_n\) ,则有:\(f_n = \sum_{i=0}^{n}(-1)^{n-i}C_{n}^{i}g_i\)

4、则上述 \(g_n\)\(f_n\) 的过程则为,二项式反演。

posted @ 2024-09-08 11:00  grape_king  阅读(41)  评论(0)    收藏  举报