bzoj 4517: [Sdoi2016]排列计数

4517: [Sdoi2016]排列计数

Time Limit: 60 Sec  Memory Limit: 128 MB
Submit: 637  Solved: 396
[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

HINT

Source

鸣谢Menci上传

 

 


答案为C(n,m)*f[n-m],f[n-m]表示(n-m)个数错排的方案数。

错排问题戳这里

Fn=(n-1)(Fn-1+Fn-2)

预处理即可。

 

 1 #include<bits/stdc++.h>
 2 #define LL long long
 3 const int oo = 0x3f3f3f3f;
 4 template <class T> inline bool Chkmin(T &x, T y) { return x > y ? x = y, true : false; }
 5 template <class T> inline bool Chkmax(T &x, T y) { return x < y ? x = y, true : false; }
 6 template <class T> inline T read(T &x)
 7 {
 8     static int f;
 9     static char c;
10     for (f = 1; !isdigit(c = getchar()); ) if (c == '-') f = -f;
11     for (x = 0; isdigit(c); c = getchar()) x = x * 10 + c - 48;
12     return x *= f;
13 }
14 template <class T> inline void write(T x, char P = 0)
15 {
16     static char s[20];
17     static int top = 0;
18     if (x < 0) x = -x, putchar('-');
19     do {s[++top] = x % 10 + 48;} while (x /= 10);
20     do {putchar(s[top]);} while (--top);
21     if (P) putchar(P);
22 }
23 
24 static const int MAXN = 1e6;
25 static const int MO = 1e9 + 7;
26 
27 static int T, N, M;
28 static int Jc[MAXN + 5], Ni[MAXN + 5], f[MAXN + 5];
29 
30 inline int Qpow(int x, int n)
31 {
32     int ans = 1;
33     while (n) {
34         if (n & 1) ans = (LL) ans * x % MO;
35         x = (LL) x * x % MO;
36         n >>= 1;
37     }
38     return ans;
39 }
40 
41 int main()
42 {
43     Ni[0] = Jc[0] = 1;
44     for (register int i = 1; i <= MAXN; ++ i) {
45         Jc[i] = (LL) Jc[i - 1] * i % MO;
46         Ni[i] = Qpow(Jc[i], MO - 2);
47     }
48     f[0] = 1; f[1] = 0;
49     for (register int i = 2; i <= MAXN; ++ i) {
50         f[i] = (LL) (f[i - 1] + f[i - 2]) * (i - 1) % MO;
51     }
52     for (read(T); T--; ) {
53         read(N), read(M);
54         write((LL) Jc[N] * Ni[N - M] % MO * Ni[M] % MO * f[N - M] % MO, '\n');
55     }
56     return 0;
57 }
View Code

 

转载于:https://www.cnblogs.com/jszyxw/p/5508409.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea compare功能 之一次bug修复

一次bug修复 最近开发完了一套单点系统&#xff0c;jenkins打包上传到服务器就出问题&#xff0c; 可以启动但是不能正常工作。 首先想到的是环境不一样&#xff0c; 于是把jenkins的jdk和maven都调整和本机大版本相同。 当然肯定是没卵用的&#xff0c; 于是查看日志 Class pa…

黑白CCD成像不理想,如何补色

黑白CCD成像不理想&#xff0c;如何补色

HALCON示例程序class_ndim_box.hdev基于多通道图像的分类

HALCON示例程序class_ndim_box.hdev基于多通道图像的分类 示例程序源码&#xff08;加注释&#xff09; 读入图片 read_image (Image, ‘ic’)创建一个新的分类器 create_class_box (ClassifHandle)获取图片大小 get_image_size (Image, Width, Height)关闭窗口 dev_close_wi…

gcc编译系统

一、 C语言编译过程 C语言的编译过程可分为四个阶段&#xff1a; 1、预处理&#xff08;Preprocessing&#xff09; 对源程序中的伪指令&#xff08;即以#开头的指令&#xff09;和特殊符号进行处理的过程。 伪指令包括&#xff1a;1&#xff09;宏定义指令&#xff1b; 2&…

自制反汇编逆向分析工具 迭代第六版本 (五)

本工具从最初版的跳转分布图只为了更直观地分析反汇编代码的分支结构&#xff0c;第三版开始对直观图进行逆向分支代码的输出&#xff0c;第四版对分支输出策略的一些探索&#xff0c;第五版结合之前的探索进行改进。第六版在现在功能的基础上进行增强&#xff0c;利用第六版&a…

模型搜索 及 轮廓搜索 的原理

模型搜索 及 轮廓搜索 的原理

Linux中设置vim自动在运算符号两边加上空格

vim中设置自动在-之类的运算符号左右两边加上空格。原版的vim不带这个功能&#xff0c;写出的代码例如zxy&#xff0c;不美观&#xff0c;很多编译器&#xff08;如VS&#xff09;能够自动在符号两边加上空格&#xff0c;如z x y&#xff0c;看起来比较美观。 只要在.vimrc里…

HALCON示例程序class_ndim_norm.hdev基于多通道图像的分类

HALCON示例程序class_ndim_norm.hdev基于多通道图像的分类 示例程序源码&#xff08;加注释&#xff09; 读入图片 read_image (Image, ‘ic’)得到图片大小 get_image_size (Image, Width, Height)关闭窗口 dev_close_window ()根据图片大小打开窗口 dev_open_window (0, 0,…

centos7搭建FTP服务器

1.   使用 yum 安装 vsftpd&#xff1a;yum install -y vsftpd 2.  启动 VSFTPD&#xff1a;systemctl start vsftpd.service 3.  启动后可监听到21端口&#xff1a;netstat -nltp | grep 21 4.  配置FTP权限&#xff1a;&#xff08;vsftpd.conf&#xff0c;修改前先备…

[HDOJ2586]How far away?(最近公共祖先, 离线tarjan, 并查集)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2586 这题以前做过…现在用tarjan搞一发…竟然比以前暴力过的慢………… 由于是离线算法&#xff0c;需要Query来保存查询数据&#xff0c;Ans来保存结果。最后输出的时候按照idx的顺序输出&#xff0c;所以胡搞…

爱普生SCARA机器人参考文档列表

爱普生SCARA机器人参考文档列表软件EPSON RC 5.0 用户指南记载了机器人系统与程序开发软件。 - 安全 - 机器人系统的操作与设定 - 程序开发软件 EPSON RC GUI的操作 - SPEL语言、应用程序 - 机器人…

HALCON示例程序classify_citrus_fruits.hdev应用常规gmm分类器进行水果分类

HALCON示例程序classify_citrus_fruits.hdev应用常规gmm分类器进行水果分类 示例程序源码&#xff08;加注释&#xff09; 读入图片、显示与显示相关设置 read_image (Image, ‘color/citrus_fruits_01’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_clos…

python进阶10 MySQL补充 编码、别名、视图、数据库修改

python进阶10 MySQL补充 编码、别名、视图、数据库修改 一、编码问题 #MySQL级别编码 #修改位置&#xff1a; /etc/mysql/mysql.conf.d/mysqld.cnf default-character-set utf8character-set-server utf8 collation-server utf8_general_ci#最佳实践 #1、无论mysql是否设…

教你如何剖析源码

一、源码阅读需求 在学习中&#xff0c;我们会需要了解&#xff0c;学习&#xff0c;使用一个框架&#xff0c;一个新的函数库。在工作中&#xff0c;因为业务需求&#xff0c;因为性能问题&#xff0c;可能通过一个更高性能的工具&#xff0c;架构去优化我们的程序。 那么&…

SPEL + 中的错误处理

SPEL 中的错误处理 如果在SPEL程序中发生错误&#xff0c;可以将执行转到错误处理例程中进行错误处理。该例程必须在函数定义内。下一页的表格显示了用于错误处理的程序指令。 项目 目的 OnErr 使用OnErr语句定义错误处理…

HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏

HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏 示例程序源码&#xff08;加注释&#xff09; 得到halcon默认图片存储路径 get_system (‘image_dir’, HalconImages) 获得操作系统类型 get_system (‘operating_system’, OS) OS{0:2}的意思是…

php调用API支付接口(转自刘68)

首先访问 https://charging.teegon.com/ 注册账号&#xff0c; 找到开发配置 记下client_id和client_secret。 点击 天工开放平台 点击天工收银 点击 SDK下载与使用 选择php版下载 解压后获得 打开form.php这个是样板文件可以用它来测试是否成功&#xff0c;测试前需要先修…

S3C2440 SPI驱动框架

S3C2440 SPI驱动代码详细解读&#xff1a; https://www.linuxidc.com/Linux/2012-08/68402p4.htm 一、platform device and board_info /* /arch/arm/plat-s3c24xx*/static struct resource s3c_spi0_resource[] { [0] {.start S3C24XX_PA_SPI,.end S3C24XX_PA_SPI 0…

单目相机标定原理

一&#xff0e;相机标定主要涉及三个坐标系&#xff1a;图像坐标系、摄像机坐标系和世界坐标系 【图像坐标系】 摄像机采集的图像变换为数字图像后&#xff0c;每副数字图像在计算机内为M x N数组&#xff0c;M行N列的图像中每一个元素&#xff08;pixel&#xff09;数值就是图…

HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片

HALCON示例程序classify_image_class_gmm.hdev使用GMM分类器分割彩色图片 示例程序源码&#xff08;加注释&#xff09; dev_update_off () dev_close_window () dev_open_window (0, 0, 735, 485, ‘black’, WindowHandle) set_display_font (WindowHandle, 14, ‘mono’, …