BZOJ4517: [Sdoi2016]排列计数
Description
Input
Output
输出 T 行,每行一个数,表示求出的序列数
Sample Input
1 0
1 1
5 2
100 50
10000 5000
Sample Output
1
20
578028887
60695423
- #include<cstdio>
- #include<cctype>
- #include<queue>
- #include<cstring>
- #include<algorithm>
- #define rep(i,s,t) for(int i=s;i<=t;i++)
- #define dwn(i,s,t) for(int i=s;i>=t;i--)
- #define ren for(int i=first[x];i;i=next[i])
- using namespace std;
- const int BufferSize=1<<16;
- char buffer[BufferSize],*head,*tail;
- inline char Getchar() {
- if(head==tail) {
- int l=fread(buffer,1,BufferSize,stdin);
- tail=(head=buffer)+l;
- }
- return *head++;
- }
- inline int read() {
- int x=0,f=1;char c=Getchar();
- for(;!isdigit(c);c=Getchar()) if(c=='-') f=-1;
- for(;isdigit(c);c=Getchar()) x=x*10+c-'0';
- return x*f;
- }
- typedef long long ll;
- const int maxn=1000010;
- const int mod=1000000007;
- int xp[maxn],inv[maxn],f[maxn];
- int C(int n,int m) {return (ll)xp[n]*inv[m]%mod*inv[n-m]%mod;}
- void init(int n) {
- xp[0]=inv[0]=inv[1]=1;
- rep(i,1,n) xp[i]=(ll)xp[i-1]*i%mod;
- rep(i,2,n) inv[i]=(ll)inv[mod%i]*(mod-mod/i)%mod;
- rep(i,1,n) inv[i]=(ll)inv[i-1]*inv[i]%mod;
- f[2]=f[0]=1;
- rep(i,3,n) f[i]=(ll)(f[i-1]+f[i-2])*(i-1)%mod;
- }
- int A[maxn],B[maxn];
- int main() {
- int n=read(),m=0;
- rep(i,1,n) m=max(m,A[i]=read()),B[i]=read();
- init(m);
- rep(i,1,n) {
- if(B[i]>A[i]) puts("0");
- else printf("%d\n",(ll)C(A[i],B[i])*f[A[i]-B[i]]%mod);
- }
- return 0;
- }
BZOJ4517: [Sdoi2016]排列计数的更多相关文章
- BZOJ4517 Sdoi2016 排列计数 【DP+组合计数】*
BZOJ4517 Sdoi2016 排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 ...
- [BZOJ4517][SDOI2016]排列计数(错位排列)
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1616 Solved: 985[Submit][Statu ...
- bzoj4517[Sdoi2016]排列计数(组合数,错排)
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1792 Solved: 1111[Submit][Stat ...
- [BZOJ4517] [Sdoi2016] 排列计数 (数学)
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
- 2018.10.25 bzoj4517: [Sdoi2016]排列计数(组合数学)
传送门 组合数学简单题. Ans=(nm)∗1Ans=\binom {n} {m}*1Ans=(mn)∗1~(n−m)(n-m)(n−m)的错排数. 前面的直接线性筛逆元求. 后面的错排数递推式本蒟 ...
- BZOJ4517——[Sdoi2016]排列计数
求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的序列可 ...
- bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得
这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...
- bzoj千题计划282:bzoj4517: [Sdoi2016]排列计数
http://www.lydsy.com/JudgeOnline/problem.php?id=4517 组合数+错排公式 #include<cstdio> #include<ios ...
- BZOJ4517:[SDOI2016]排列计数(组合数学,错排公式)
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
随机推荐
- python装饰器入门
按别人的教程弄的. 要清楚基于类和基于函数的实现的不同之处. #!/usr/bin/env python # -*- coding: utf-8 -*- ''' class entryExit(obj ...
- 无废话ExtJs 入门教程十三[上传图片:File]
无废话ExtJs 入门教程十三[上传图片:File] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- FTP的20、21端口,工作模式
什么是FTP? FTP就是文件传输协议 File Transfer Protocol 的缩写. FTP端口号是多少? 21 FTP的端口号能改吗? 能 ftp的端口号20.21有何区别? 一个是数据端 ...
- Linux下常用命令
1.判断桌面环境是Gnome还是KDE #update-alternatives --display x-session-manager
- JAVA安装,环境变量配置
JAVA环境变量设置 PATH %JAVA_HOME%\bin JAVA_HOME D:\ProgramFiles\Java\jdk1.6.0_10 CLASSPATH .;%JAVA_HOME%\l ...
- HDU 5875 Function st + 二分
Function Problem Description The shorter, the simpler. With this problem, you should be convinced ...
- 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
稀疏矩阵是指矩阵中的元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上都是稀疏矩阵,很多稀疏度在90%甚至99%以上.因此我们需要有高效的稀疏矩阵存储格式.本文总结几种典型的格式:COO,CSR ...
- 启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required
错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009) http://blog.csdn.net/xinxin19881112/article/det ...
- python限定类属性的类属性:__slots__
__slots__ 由于Python是动态语言,任何实例在运行期都可以动态地添加属性. 如果要限制添加的属性,例如,Student类只允许添加 name.gender和score 这3个属性,就可以利 ...
- HTML DOM学习之二
1.HTML DOM属性: **innerHTML属性-获取元素内容的最简单方法是使用innerHTML属性,innerHTML属性对于获取或替换HTML元素的内容很有用 <html> & ...