题意

题目描述

求有多少种长度为 n 的序列 A,满足以下条件:

1 ~ n 这 n 个数在序列中各出现了一次

若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的

满足条件的序列可能很多,序列数对 109+710^9+7109+7 取模。

输入输出格式

输入格式:

第一行一个数 T,表示有 T 组数据。

接下来 T 行,每行两个整数 n、m。

输出格式:

输出 T 行,每行一个数,表示求出的序列数

输入输出样例

输入样例#1:
复制

5
1 0
1 1
5 2
100 50
10000 5000
输出样例#1:
复制

0
1
20
578028887
60695423

说明

测试点 1 ~ 3: T=1000T = 1000 T=1000,n≤8 n \leq 8 n≤8,m≤8 m \leq 8 m≤8;

测试点 4 ~ 6: T=1000T = 1000 T=1000,n≤12 n \leq 12 n≤12,m≤12 m \leq 12 m≤12;

测试点 7 ~ 9: T=1000T = 1000 T=1000,n≤100 n \leq 100 n≤100,m≤100 m \leq 100 m≤100;

测试点 10 ~ 12:T=1000 T = 1000 T=1000,n≤1000 n \leq 1000 n≤1000,m≤1000 m \leq 1000 m≤1000;

测试点 13 ~ 14:T=500000 T = 500000 T=500000,n≤1000 n \leq 1000 n≤1000,m≤1000 m \leq 1000 m≤1000;

测试点 15 ~ 20:T=500000 T = 500000 T=500000,n≤1000000 n \leq 1000000 n≤1000000,m≤1000000 m \leq 1000000 m≤1000000。

分析

选出哪些元素固定,剩下的就是错排问题

错排数递推公式:

\[D_0=1,D_1=0 \\
D_n=(n-1)(D_{n-1}+D_{n-2}) \quad n\ge 2
\]

答案为

\[\binom nm D_{n-m}
\]

时间复杂度\(O(n+T)\)

代码

#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;rg char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') w=-1;ch=getchar();}
while(isdigit(ch)) data=data*10+ch-'0',ch=getchar();
return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll; co int N=1e6+1,mod=1e9+7;
int num[N]={1,1},inv[N]={1,1},f[N]={1,0};
il int mul(int x,int y){return (ll)x*y%mod;}
int main(){
// freopen(".in","r",stdin),freopen(".out","w",stdout);
for(int i=2;i<N;++i){
num[i]=mul(num[i-1],i);
inv[i]=mul(mod-mod/i,inv[mod%i]);
f[i]=mul(i-1,f[i-1]+f[i-2]);
}
for(int i=2;i<N;++i) inv[i]=mul(inv[i-1],inv[i]);
for(int t=read<int>(),n,m;t--;){
read(n),read(m);
printf("%d\n",mul(num[n],mul(inv[n-m],mul(inv[m],f[n-m]))));
}
return 0;
}

LG4071 [SDOI2016]排列计数的更多相关文章

  1. BZOJ 4517: [Sdoi2016]排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 911  Solved: 566[Submit][Status ...

  2. bzoj-4517 4517: [Sdoi2016]排列计数(组合数学)

    题目链接: 4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 846  Solved: 530[Submit][ ...

  3. 数学(错排):BZOJ 4517: [Sdoi2016]排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 693  Solved: 434[Submit][Status ...

  4. BZOJ 4517: [Sdoi2016]排列计数 [容斥原理]

    4517: [Sdoi2016]排列计数 题意:多组询问,n的全排列中恰好m个不是错排的有多少个 容斥原理强行推♂倒她 $恰好m个不是错排 $ \[ =\ \ge m个不是错排 - \ge m+1个不 ...

  5. BZOJ_4517_[Sdoi2016]排列计数_组合数学

    BZOJ_4517_[Sdoi2016]排列计数_组合数学 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[ ...

  6. [BZOJ4517][SDOI2016]排列计数(错位排列)

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1616  Solved: 985[Submit][Statu ...

  7. BZOJ 4517: [Sdoi2016]排列计数 错排公式

    4517: [Sdoi2016]排列计数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4517 Description 求有多少种长度为 ...

  8. 【BZOJ4517】[Sdoi2016]排列计数 组合数+错排

    [BZOJ4517][Sdoi2016]排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值 ...

  9. BZOJ4517 Sdoi2016 排列计数 【DP+组合计数】*

    BZOJ4517 Sdoi2016 排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 ...

随机推荐

  1. JavaScript -基础- 函数与对象(二)String

    一.判断数据类型typeof与判断对象类型instanceof 1.typeof typeof只能判断基础数据类型,无法判断引用数据类型 <script> var s="hell ...

  2. PC/FORTH 循环

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  3. SQL-34 对于表actor批量插入如下数据

    题目描述 对于表actor批量插入如下数据CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,fir ...

  4. ssh免密登陆

    1:建立新用户hadoop 2:进入/home/hadoop/.ssh/目录 3:所有要免密连接的终端运行: ssh-keygen -t rsa 三次回车后会产生:id_rsa,id_rsa.pub两 ...

  5. 转-Asynchronous bulk transfer using libusb

    https://falsinsoft.blogspot.jp/2015/02/asynchronous-bulk-transfer-using-libusb.html The 'linusb' is ...

  6. linux和 unix 介绍

    linux和unix都是当今鼎鼎大名的操作系统,可以说改变了这个世界,也是当今科技产业的重要基础.让我们回顾一下他们的发展史吧. 1.unix起源. 上世纪六十年代时,大部份计算机都是采用批处理的方式 ...

  7. python 时间戳转换格式

    1.简介 在编写代码时,往往涉及时间.日期.时间戳的相互转换. 2.示例 # 引入模块 import time, datetime 2.1 str类型的日期转换为时间戳 1 # 字符类型的时间 2 t ...

  8. HDU 6034 17多校1 Balala Power!(思维 排序)

    Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He want ...

  9. [转] [Elasticsearch] 数据建模 - 处理关联关系(1)

    [Elasticsearch] 数据建模 - 处理关联关系(1) 标签: 建模elasticsearch搜索搜索引擎 2015-08-16 23:55 6958人阅读 评论(0) 收藏 举报 分类: ...

  10. opengl学习,一篇就够你基本了解

    http://blog.csdn.net/iduosi/article/details/7835624