[关闭]
@wsndy-xx 2018-08-21T16:30:46.000000Z 字数 723 阅读 741

problem


本不同的书放在书架上。其中 本书已经重新摆放好,将剩下的 本书也重新摆放,使每本书都不在原来放的位置。求有几种摆法。
【输入文件】
行两个数
接下来 行,每行两个数 ,表示原来的第 本书已经放到了第 个位置上
数据保证任意两个 不相同,任意两个 不相同
【输出文件】
输出方案数,对 取模。
【样例输入】
4 1
1 2
【样例输出】
3
【样例解释】
(2 1 4 3)、(3 1 4 2)、(4 1 2 3)
【数据范围】
对于 30%的数据,n<=10
对于 60%的数据,n<=20
对于 100%的数据,n<=100000,1<=x i ,y i <=n


错解

D(i) 表示 i 个数错排

考虑将还可以用的位置和数字提取出来
位置 1 3 7 2 9 6
数字 1 3 7 4 8 5
那么问题转化为将所有的可用数字放入可用位置并且保证所有数字不能放入对应位置,即数字的大小 != 位置的编号
记位置和数字都可用的个数为a = 3,记可用序列的长度为 L = 6, b = L - a = 3;
简记位置和数字都可用的部分为数位相同部分

Answer = 数位相同部分的合法答案 * 数位不同部分的合法答案

首先考虑数位相同部分
可以分为加入外来数字与不加入外来数字
4 8 5 为外来数字
不加入外来数字的方案数为 D(a)
加入外来数字的方案数:
从数位不同部分选择并且与数位相同部分交换
方案数

我们考虑数位相同部分已经用了 a 个
那么显然数位不同部分的答案为 !b
因为在这一部分把剩下的 b 个数随便排列都可以,即 b 个数的全排列 = b!

所以

so, why is it wrong?

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注