洛谷 P4071 [SDOI2016]排列计数
这是一道组合数学题。
对于一个长为n的序列,首先我们要选m个使之稳定\(C^{m}_{n}\)。
且要保证剩下的序列不稳定,即错排\(D_{n-m}\)。
所以答案就是:$$ANS=C^{m}{n}+D{n-m}$$
再看看数据范围:n最大\(10^6\),错排好办,直接递推:
\]
D[0]=1,D[1]=0。
而组合数部分有点麻烦。$$C[i][j]=C[i-1][j]+C[i-1][j-1]$$
用上面这个公式可以做1000的点,\(n^2\)递推。
至于满分,我们可以用普通的组合数公式:$$C(n,m)=n!/[(n-m)!m!]$$
我们预处理ni[]表示x的阶乘。
接下来很好做了,除法取模涉及逆元,因为模数是质数,直接费马\(t^{\texttt{mod}-2}\)
所以代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mo=1e9+7;
int n,m;
ll D[1000001]={1,0,1},ni[1000001]={1};
void pre()
{
for (int i=3;i<=1000000;++i)
D[i]=(i-1)*(D[i-1]+D[i-2])%mo;
for (int i=1;i<=1000000;++i)
ni[i]=ni[i-1]*i%mo;
}
ll qpow(ll x)
{
ll p=mo-2,d=1;
while (p) {
if (p&1) d=d*x%mo;
x=x*x%mo;p>>=1;
}
return d;
}
int main()
{
pre();
int T;cin>>T;
while (T--) {
scanf("%d%d",&n,&m);
ll C=ni[n]*qpow(ni[m]*ni[n-m]%mo)%mo;
printf("%lld\n",C*D[n-m]%mo);
}
return 0;
}
洛谷 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 ...
- 洛谷 P2606 [ZJOI2010]排列计数 解题报告
P2606 [ZJOI2010]排列计数 题目描述 称一个\(1,2,...,N\)的排列\(P_1,P_2...,P_n\)是\(Magic\)的,当且仅当对所以的\(2<=i<=N\) ...
- 洛谷P2606 [ZJOI2010]排列计数(组合数 dp)
题意 题目链接 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案 ...
- ●洛谷P2606 [ZJOI2010]排列计数
题链: https://www.luogu.org/problemnew/show/P2606题解: 组合数(DP),Lucas定理 首先应该容易看出,这个排列其实是一个小顶堆. 然后我们可以考虑dp ...
- P4071 [SDOI2016]排列计数
题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...
- 洛谷P2606 [ZJOI2010]排列计数
题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很 ...
- 洛谷P2606 [ZJOI2010]排列计数(数位dp)
题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很 ...
随机推荐
- Python 标准库 BaseHTTPServer 中文翻译
Python 标准库 BaseHTTPServer 中文翻译. 注意: BaseHTTPServer模块在Python3中已被合并到http.server,当转换你的资源为 Python3 时 2to ...
- 转 spring官方文档中文版
转 http://blog.csdn.net/tangtong1/article/details/51326887另附码云地址 https://gitee.com/free/spring-framew ...
- Atitit.atijson 类库的新特性设计与实现 v3 q31
Atitit.atijson 类库的新特性设计与实现 v3 q31 1. V1版本---集成了多引擎1 2. V2版本新特性 --bsh脚本化2 3. V3版本新特性---循环引用解决使用fastjs ...
- android studio - 隐藏编辑器标签块上面的索引
- Graph Visualization
1. 什么是graph visualization? Graph visualization is a way of representing structural information as di ...
- crontab执行脚本与手动执行结果不一致
反正网上说是环境变量问题,我就直接在脚本第二行加入以下代码: source /etc/profile source ~/.bashrc 问题是解决了!
- codeforces624b Making a String
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Status De ...
- 配置LANMP环境(2)-- 安装ifconfig命令与安装SecureCRT
一.安装ifconfig命令 yum whatprovides ifconfig yum install net-tools 安装这个命令就是为了查看虚拟机的ip地址,SecureCRT连接必须要ip ...
- request.getParameterValues()用法
<form name="checkform" method="post" action="getvalue.jsp"> 你希望学 ...
- vSphere共享存储全配置流程
1.Openfiler的安装 Openfiler 由rPath Linux驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域 ...