错排总结
错排数
错排数通项公式 :
\(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\) 对 (数, 位置) 一一冲突的方案数.
通项公式 :
于是就有
发现如果右侧的 \(\frac{(n-i)!}{(m-i)!}\) 和 \(m\) 有关就可以用多项式快速求出 \(f_{n,m}\) 了。
于是考虑把 \(n\) 拆开,设 \(g_{n,m} = f_{n-m,m}\) 有:
这也可以得到一个和多项式有关的小 \(trick\) . 设 \(g_{n,m} = f_{n-m,m}\) , 虽然这样求出的是 \(f_{n,m}\) 的一条斜线.
这样就可以 \(fft\) 了.
递推公式 :
对于 \(f_{n,m}\) , 对于最后一个有冲突的位置,可以放无冲突的数和有冲突的数.放后分别会变成 \((n-m)f_{n-1,m}\) 和 \(mf_{n-1,m-1}\)