错排
错排
定义错排d(x)为:长度为x的排列,并且对于任意i,第i位的数不是i的排列方案数。
求法1:无脑容斥。
至少有k个位置对应的数与下标相同的方案数为 \(\binom{n}{k} (n-k)!\)
d(x)相当于k=0的情况减k=1加上k=2...来容斥的结果。形式化表达为:
\[d(n) = \sum_{k=0}^n(-1)^k\binom{n}{k} (n-k)!\\
=n!\sum^n_{k=0}(-1)^k\frac{1}{k!} (用定义展开组合数,将n!移出来)
\]
求法2:递推
另一种做法是考虑递推,
第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素要满足错排的性质,就有\(d_{n-2}\)种方法;⑵第k个元素不把它放到位置n,其他元素i不能放在第i个元素的位置,这和错排所求的问题是一样的,这时,对于这n-1个元素,有 \(d_{n-1}\) 种方法
\[\therefore d_n = (n-1)(d_{n-1} + d_{n-2})
\]
初值:\(d_1 = 0, d_2 = 1\)
例题
[SDOI2016] 排列计数
求有多少种 1 ∼ n 的排列 a,满足恰有 m 个位置 i 使得 \(a_i = i\)。答案对 1e9 + 7 取模。
1 ≤ T ≤ 5 × 1e5,1 ≤ n ≤ 1e6,0 ≤ m ≤ 1e6。
从n中任意钦定m个位置:$\binom{n}{m}
剩下位置错排:\(d_{n-m}\)
所以答案为\(\binom{n}{m}d_{n-m}\)
\(O(n)\)预处理阶乘逆元和错排后\(O(1)\)求
最后特判n=m时,答案为1

浙公网安备 33010602011771号