组合数学+错排问题【p4071】[SDOI2016]排列计数
Description
求有多少种长度为 n 的序列 A,满足以下条件:
1 ~ n 这 n 个数在序列中各出现了一次
若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的
满足条件的序列可能很多,序列数对 10^9+7109+7 取模。
Input
第一行一个数 T,表示有 T 组数据。
接下来 T 行,每行两个整数 n、m。
Output
输出 T 行,每行一个数,表示求出的序列数
组合数+错排问题。
预处理\(fac[i]\)代表\(i\)的阶乘.\(inv[i]\)代表\(i\)的阶乘的逆元。
\(f[i]\)代表有\(i\)个数的错排方案数。
我们的答案就是\(C_n^{m} \times f[n-m]\)
不难理解的解释.
注意判断\(n==m\)输出\(1\)。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#define int long long
#define mod 1000000007
#define R register
using namespace std;
const int gz=1000008;
int fac[gz]={1,1},inv[gz],T,f[gz];
inline void in(int &x)
{
	int f=1;x=0;char s=getchar();
	while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
	while(isdigit(s)){x=x*10+s-'0';s=getchar();}
	x*=f;
}
inline int ksm(R int x,R int y)
{
	R int res=1;
	for(;y;y>>=1,x=x*x%mod)
		if(y&1)res=res*x%mod;
	return res;
}
inline int C(R int n,R int m)
{
	return (fac[n]%mod*inv[n-m])%mod*(inv[m])%mod;
}
signed main()
{
	f[2]=1;
	for(R int i=2;i<=gz;i++)fac[i]=fac[i-1]*i%mod;
	inv[gz]=ksm(fac[gz],mod-2);
	for(R int i=gz-1;i>=0;i--)inv[i]=((i+1)*inv[i+1])%mod;
	for(R int i=3;i<=gz;i++)f[i]=(i-1)*(f[i-2]+f[i-1])%mod;
	in(T);
	for(R int n,m;T;T--)
	{
		in(n),in(m);
		if(n==m)puts("1");
		else printf("%lld\n",((C(n,m)%mod)*(f[n-m]%mod))%mod);
	}
}
												
											组合数学+错排问题【p4071】[SDOI2016]排列计数的更多相关文章
- 洛谷——P4071 [SDOI2016]排列计数(错排+组合数学)
		
P4071 [SDOI2016]排列计数 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列 ...
 - 洛谷 P4071 [SDOI2016]排列计数 题解
		
P4071 [SDOI2016]排列计数 题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳 ...
 - P4071 [SDOI2016]排列计数
		
题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...
 - 洛谷P4071 [SDOI2016] 排列计数 [组合数学]
		
题目传送门 排列计数 题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m ...
 - Luogu  P4071 [SDOI2016]排列计数
		
晚上XZTdalao给我推荐了这道数论题.太棒了又可以A一道省选题了 其实这道题也就考一个错排公式+组合数+乘法逆元 我们来一步一步分析 错排公式 通俗的说就是把n个1~n的数排成一个序列A,并使得所 ...
 - 洛谷 P4071 [SDOI2016]排列计数
		
洛谷 这是一道组合数学题. 对于一个长为n的序列,首先我们要选m个使之稳定\(C^{m}_{n}\). 且要保证剩下的序列不稳定,即错排\(D_{n-m}\). 所以答案就是:\[ANS=C^{m}_ ...
 - P4071 [SDOI2016]排列计数 题解
		
分析: 线性求逆元:https://blog.csdn.net/qq_34564984/article/details/52292502 代码: #include<cstdio> usin ...
 - 数学【洛谷P4071】 [SDOI2016]排列计数
		
P4071 [SDOI2016]排列计数 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列 ...
 - 数学(错排):BZOJ 4517: [Sdoi2016]排列计数
		
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 693 Solved: 434[Submit][Status ...
 - BZOJ 4517: [Sdoi2016]排列计数 错排公式
		
4517: [Sdoi2016]排列计数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4517 Description 求有多少种长度为 ...
 
随机推荐
- [CF1077C]Good Array
			
题目大意:一个序列是好的当且仅当有一个数是其它所有数的和,问一个序列可以删掉哪个数变成好的序列.输出所有方案. 题解:发现等于其他数的和的那个数一定是其中最大的,只要排序一下(其实只要找到最大的两个数 ...
 - [Leetcode] Merge k sorted lists 合并k个已排序的链表
			
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
 - [Leetcode] unique paths 独特路径
			
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
 - Generator的基本用法
			
Generator函数是一个状态机,封装了多个内部状态.执行一个Generator,会返回一个迭代器对象,通过迭代器对象,可以遍历Generator函数内部的每个状态.因此,Generator函数可以 ...
 - yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
			
yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 博客分类: linux 三种解决方案 我采取第三种方案解决的 第一种: linu ...
 - Spring源码解析-事件
			
Spring事件的组件 主要是3个组件: 1.ApplicationEvent 事件 2.ApplicationListener 监听器,对事件进行监听 3.ApplicationEventMul ...
 - POJ1984:Navigation Nightmare(带权并查集)
			
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7871 Accepted: 2 ...
 - BZOJ1798  维护序列seq
			
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 8058 Solved: 2964[Submit ...
 - centos7上安装docker-ce社区版
			
报错:Error: docker-ce-selinux conflicts with 2:container-selinux-2.12-2.gite7096ce.el7.noarch 转载:http: ...
 - fieldset——一个不常用的HTML标签
			
fieldset 标签 -- 对表单进行分组 在form表单中,我们可以对form中的信息进行分组归类,如注册表单的form,我们可以将注册信息分组成 基本信息(一般为必填) 详细信息(一般为可选) ...