4517: [Sdoi2016]排列计数

Time Limit: 60 Sec  Memory Limit: 128 MB
Submit: 1259  Solved: 766
[Submit][Status][Discuss]

Description

求有多少种长度为 n 的序列 A,满足以下条件:
1 ~ n 这 n 个数在序列中各出现了一次
若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的
满足条件的序列可能很多,序列数对 10^9+7 取模。

Input

第一行一个数 T,表示有 T 组数据。
接下来 T 行,每行两个整数 n、m。
T=500000,n≤1000000,m≤1000000

Output

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

Sample Input

5
1 0
1 1
5 2
100 50
10000 5000

Sample Output

0
1
20
578028887
60695423

会错排这题一看就发现了

n个中有m个数稳定情况是C(n, m),直接阶乘打标+逆元

然后剩下n-m个数错排,公式是F[n] = (n-1)*(F[n-1]+F[n-2])

最后相乘

错排问题blog(我的):

http://blog.csdn.net/jaihk662/article/details/52251034

#include<stdio.h>
#define LL long long
#define mod 1000000007
LL jc[1000005] = {1,1,2}, F[1000005] = {1,0,1};
LL Pow(LL a, LL b)
{LL ans;ans = 1;while(b){if(b%2==1)ans = (ans*a)%mod;a = (a*a)%mod;b /= 2;}return ans;
}
LL C(LL n, LL m)
{LL ans;if(n<m)return 0;ans = (jc[n]*Pow((jc[m]*jc[n-m])%mod, mod-2)%mod)%mod;return ans;
}
int main(void)
{LL T, n, m, i;for(i=3;i<=1000000;i++){F[i] = (F[i-1]+F[i-2])*(i-1)%mod;jc[i] = jc[i-1]*i%mod;}scanf("%lld", &T);while(T--){scanf("%lld%lld", &n, &m);printf("%lld\n", C(n, m)*F[n-m]%mod);}return 0;
}

bzoj 4517: [Sdoi2016]排列计数(错排+组合数逆元)相关推荐

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

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

  2. bzoj 4517: [Sdoi2016]排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MB Submit: 637  Solved: 396 [Submit][Stat ...

  3. [SDOI2016]排列计数 (错排数概念 + 递推公式【附带证明】)

    辛勤二更 题目 题解 错排数概念 错排数递推公式及其证明 代码实现 这种题做的时候: 做完后:正常这就是生活,我们要学会习惯 题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n ...

  4. bzoj4517 [Sdoi2016]排列计数 组合数+错排

    这个题描述的本身就很离散,所以就相当于选出m个位置,剩下的位置的错排 错排的公式也不是很难推,注意及时利用以前的结果就好了,实在不行根据印象打表找规律 设有n个数  ,n个位置,第一个数一定不能选第一 ...

  5. bzoj千题计划282:bzoj4517: [Sdoi2016]排列计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=4517 组合数+错排公式 #include<cstdio> #include<ios ...

  6. P4071-[SDOI2016]排列计数【组合计数,错排】

    正题 题目链接:https://www.luogu.com.cn/problem/P4071 题目大意 每次询问n,mn,mn,m.求有多少个nnn的排列使得ai=ia_i=iai​=i的数量恰好为m ...

  7. [SDOI2016]排列计数

    Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

  8. BZOJ4517: [Sdoi2016]排列计数

    Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

  9. [ZJOI2010] 排列计数(dp + 组合数)

    problem luogu-P2606 solution 我们对 i−⌊i2⌋i-\lfloor\frac i2\rfloori−⌊2i​⌋ 远没有 i−2∗i,2∗i+1i-2*i,2*i+1i−2 ...

最新文章

  1. 利用nofllow与内页链接做好SEO
  2. asp.net用Zxing库实现条形码输出
  3. python常用标准库有哪些-Python - 常用标准库
  4. android 菱形布局,Android 设计一个菱形形状的Imageview组件.
  5. 36.rustc编译参数.txt
  6. python 字符串替换_Python基础教程,第四讲,字符串详解
  7. java赋值语句_java并发编程之原子性问题
  8. 华为路由器http诊断失败_高端家庭的标配,华为路由Q2 Pro是路由器中的吴彦祖...
  9. jqgrid如何渲染表格数据_Jqgrid入门-操作表格的数据(二)
  10. .net core 获取binary 文件_Linux操作系统文件目录
  11. 【ORACLE】ORA-12547: TNS:lost contact
  12. 用库仑计方法来计量电池容量
  13. stm32---步进电机驱动器接口电路,共阴
  14. Java求抛物线输入角度速度_知道初速度和抛物线的角度,怎么计算落点
  15. 怎么把原本一页的PDF拆分成单独的两页?
  16. 第22章 常用存储器介绍
  17. pathrewrite不生效_Vue使用Proxy代理后仍无法生效的解决
  18. moment的使用在vue项目中的使用 (亲测有效)
  19. 【第57题】输入、输出系列5-文件锁定功能
  20. UpdatePanel和ScriptManager实现免刷新获取数据

热门文章

  1. 自学python需要安装什么-终于明白python需要学什么
  2. 自学python好找工作么-自学Python那个方向好找工作?
  3. 爬虫python能做什么-Python除了爬虫,还能干啥?
  4. python菜鸟教程100例-Python 练习实例4
  5. python与java前景-java和Python的前景谁更好
  6. python下载哪个版本好-究竟哪个版本的Python是最快的?
  7. python一般的基础代码-Python:模块代码编写基础
  8. 三星S8折戟语音识别,靠拿来主义和自主研发仍难有起色
  9. 抓包神器之Charles
  10. JavaScript-关于变量