错排总结

错排数

错排数通项公式 :

\(D_n = \sum_{i=0}^{n}\tbinom{n}{i}(-1)^i(n - i)! = \sum_{i=0}^{n}\frac{n!}{i!}(-1)^i\)

错排数递推公式 :

\(D_n = (n-1)(D_{n-1} + D_{n-2})\)

定义一个数和一个位置冲突当且仅当这个数不能放到这个位置上。

考虑往第 \(n\) 位放数。有 \(n-1\) 种不同的选择,设选择放 \(m\) , 那么对于数字 \(n\) , 如果放到第 \(m\) 位上,那么剩下的数错排的方案数为 \(D_{n-2}\) , 如果不放到第 \(m\) 位上,那么因为 \(n\) 不能放到第 \(m\) 位上,所以在后面的操作中 \(n\) 和第 \(m\) 位冲突, 所以还剩下 \(n-1\) 个位置和 \(n-1\) 个数字且一一冲突,方案数为 \(D_{n-1}\) , 所以有 \(D_n = (n-1)(D_{n-2} + D_{n-1})\)

不一一冲突的错排数 :

\(f_{n,m}\) 表示一共 \(n\) 位,有 \(m\) 对 (数, 位置) 一一冲突的方案数.

通项公式 :

\[\begin{aligned} f_{n,m} & = \sum_{i=0}^{m}\tbinom{m}{i}(-1)^i(n-i)!\\ & =\sum_{i=0}^{m}\frac{m!}{i!(m-i)!}(-1)^i(n-i)! \end{aligned} \]

于是就有

\[\frac{f_{n,m}}{m!}=\sum_{i=0}^{m}\frac{(-1)^i}{i!}\frac{(n-i)!}{(m-i)!} \]

发现如果右侧的 \(\frac{(n-i)!}{(m-i)!}\)\(m\) 有关就可以用多项式快速求出 \(f_{n,m}\) 了。

于是考虑把 \(n\) 拆开,设 \(g_{n,m} = f_{n-m,m}\) 有:

\[\frac{g_{n,m}}{m!} = \sum_{i=0}^{m}\frac{(-1)^i}{i!}\frac{(n+m-i)!}{(m-i)!} \]

这也可以得到一个和多项式有关的小 \(trick\) . 设 \(g_{n,m} = f_{n-m,m}\) , 虽然这样求出的是 \(f_{n,m}\) 的一条斜线.

这样就可以 \(fft\) 了.

递推公式 :

\[\begin{cases} f_{n,0} = f_{n-1,0} = n!\\ f_{n,m} = (n-m)f_{n - 1, m} + mf_{n-1,m-1}\quad(n>m)\\ f_{n,n} = D_n \end{cases} \]

对于 \(f_{n,m}\) , 对于最后一个有冲突的位置,可以放无冲突的数和有冲突的数.放后分别会变成 \((n-m)f_{n-1,m}\)\(mf_{n-1,m-1}\)

posted @ 2021-12-12 21:19  youwike  阅读(152)  评论(0编辑  收藏  举报