组合数学(转)
错排:
设 \((a_1,a_2,...,a_n)\) 是 \(\{1,2,...,n\}\) 的全排列,若对任意的 \(i\in\{1,2,..,n\}\)都有 \(a_i\ne i\),则称 \((a_i,a_2,...,a_n)\) 是 \(\{1,2,...,n\}\) 的错位排列。
用 \(D_n\) 表示 \(\{1,2,...,n\}\) 的错位排列的个数,有:\(D_n=n!*(1-\frac1 1!+\frac1 2!-\frac1 3!+...+\frac{(-1)^n}n!)\)
圆排列:
从 n 个不同元素中选取 r 个元素,不分首尾地围成一个圆圈的排列叫做圆排列,其排列方案数为:\(\frac{A(n,r)}{r}\)
当 r=n 时,则为圆排列的全排列,其排列方案数为:\(\frac{n!}{n}=(n-1)!\)
第二类斯特林数:
\(S(n,m)\) 表示有 \(n\) 个有区别小球,要放进 \(m\) 个相同盒子里,且每个盒子非空的方案数
考虑一个很容易的递推:
考虑组合意义:
假设前面的 \(n−1\) 个球丢进了 \(m−1\) 个组,因为每个组非空,所以这个球只有一种选择,自己一组
如果前面的球已经分成了 \(m\) 组,那么,这个球就有 \(m\) 种放法
通项公式:
\(S(n,m)=\frac 1{m!}\sum_{k=0}^m(−1)^kC(m,k)(m−k)^n\)
假设盒子有区别,并且我们允许空盒的存在
显然的,\(m^n\) 就是答案
但是不允许空盒存在 所以容斥一下
枚举当前有几个空盒子存在
把这几个盒子选出来,也就是 \(C(m,k)\)
然后剩下 \(m−k\) 个盒子,\(n\) 个球可以随便放,也就是 \((m−k)n\)
最后退出来,我们盒子是没有区别的,所以除以一个 \(m!\)
那么,怎么算
考虑一下组合意义,把 \(n\) 个有区别的小球分给有区别的 \(m\) 个盒子里,允许空盒的方案数
第二类斯特林数是什么?
\(S(n,m)\) 表示 \(n\) 个球丢进 \(m\) 个相同盒子里,不允许空盒
那枚举一下有 \(i\) 个盒子不是空的
再把球丢进盒子就是 \(S(n,i)∗i\)
如果要算第二类斯特林数,除了 \(n^2\) 的递推有没有别的方法呢?
显然是有的
重新看看上面用容斥和组合意义得到的式子
整理一下
可以用多项式卷积求出 \(S(n,X)\)
复杂度 \(O(nlogn)\)
放球问题:
n个球是否有区别 | m个盒是否有区别 | 是否允许空盒 | n是否大于m | 方案数 | 简要解释 |
---|---|---|---|---|---|
是 | 是 | 是 | 是 | $$m^n$$ | 每个球有m种可能 |
是 | 是 | 是 | 否 | $$m^n$$ | 每个球有m种可能 |
是 | 是 | 否 | 是 | $$m!S(n,m)$$ | 类比盒无区别时,再乘以盒的可能排列 |
是 | 是 | 否 | 否 | $$0$$ | 盒比球多,必有空盒 |
是 | 否 | 是 | 是 | $$S(n,1)+S(n,2)+...+S(n,m)$$ | 枚举有球盒的数量,再利用斯特林数 |
是 | 否 | 是 | 否 | $$S(n,1)+S(n,2)+...+S(n,n)$$ | 枚举有球盒的数量,再利用斯特林数 |
是 | 否 | 否 | 是 | $$S(n,m)$$ | 根据斯特林数定义 |
是 | 否 | 否 | 否 | $$0$$ | 盒比球多,必有空盒 |
否 | 是 | 是 | 是 | $$C_{m+n-1}^n$$ | 插板法或根据可重组合计算公式 |
否 | 是 | 是 | 否 | $$C_{m+n-1}^n$$ | 插板法或根据可重组合计算公式 |
否 | 是 | 否 | 是 | $$C_{n-1}^{m-1}$$ | 先给每盒放一球,然后利用n-m个球,m个盒子有空盒的解 |
否 | 是 | 否 | 否 | $$0$$ | 盒比球多,必有空盒 |
否 | 否 | 是 | 是 | $$G(x)=\frac{1}{(1-x)(1-x2)...(1-xm)}中x^n的系数$$ | 母函数方法 |
否 | 否 | 是 | 否 | $$G(x)=\frac{1}{(1-x)(1-x2)...(1-xn)}中x^n的系数$$ | 母函数方法 |
否 | 否 | 否 | 是 | $$G(x)=\frac{1}{(1-x)(1-x2)...(1-xm)}中x^{n-m}的系数$$ | 母函数方法 |
否 | 否 | 否 | 否 | $$0$$ | 盒比球多,必有空盒 |