题目
题目描述
求有多少种长度为 n 的序列 A,满足以下条件:
1 ~ n 这 n 个数在序列中各出现了一次
若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的
满足条件的序列可能很多,序列数对 10^9+7109+7 取模。
输入格式
第一行一个数 T,表示有 T 组数据。
接下来 T 行,每行两个整数 n、m。
输出格式
输出 T 行,每行一个数,表示求出的序列数
前置知识
需要用到错位相排的知识
就是说:有n张信与n个信封一一对应,现在要求每一张信都装错信封的排列个数
现在假设这里有n个信封:
对于第一张信,不妨设它放进了二号信封
那么对于二号信,有两种情况
如果它放进一号信封:
那么就只剩下n-2个的错位相排了
如果它放进了其它信封,那么其实可以等价于:二号信放进了二号信封,其中一号信放进了其它位置,那么这就是n-1的错位相排
所以
可是刚刚只是设第一号位放进二号位
对于放进其它地方的情况,就有i-1种
所以:
d[i] = (i-1)*(d[i-1]+d[i-2])
题解
所以这就是一个板子题,枚举每一个m的集合再乘上d[n-m]
C(n,m)*d[n-m]
没有代码了