动态规划(计数DP):JLOI 2016 成绩比较
Description
Input
Output
仅一行一个正整数,表示满足条件的情况数模10^9+7的余数。
Sample Input
2 2
1 2
Sample Output
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N=,Mod=;
int n,m,K,u[N],r[N];
typedef long long LL;
LL fac[N],ifac[N],c[N][N],f[N],g[N];
LL Inv(LL x){return x==?:(Mod-Mod/x)*Inv(Mod%x)%Mod;}
LL C(int x,int y){
if(x<y||x<||y<)return ;
return fac[x]*ifac[y]%Mod*ifac[x-y]%Mod;
} LL Quick_pow(LL x,LL y){
LL ret=;
while(y){
if(y&)ret=ret*x%Mod;
y>>=;x=x*x%Mod;
}
return ret;
} int main(){
scanf("%d%d%d",&n,&m,&K);
for(int i=;i<=m;i++)
scanf("%d",&u[i]);
for(int i=;i<=m;i++)
scanf("%d",&r[i]);
fac[]=ifac[]=;
for(int i=;i<N;i++){
fac[i]=fac[i-]*i%Mod;
ifac[i]=Inv(fac[i]);
}
for(int i=n-;i>=K;i--){
f[i]=C(n-,i);
for(int j=;j<=m;j++)
(f[i]*=C(n-i-,r[j]-))%=Mod;
for(int j=i+;j<n;j++){
(f[i]-=f[j]*C(j,i))%=Mod;
(f[i]+=Mod)%=Mod;
}
}
LL ans=f[K];
for(int i=;i<=m;i++){
LL R=r[i],U=u[i];
g[]=U;
for(int k=;k<=n;k++){
g[k]=Quick_pow(U+,k+)-;
for(int j=k-;j>=;j--)
(g[k]+=Mod-C(k+,j)*g[j]%Mod)%=Mod;
(g[k]*=Inv(C(k+,k)))%=Mod;
}
LL tmp=,rmp;
for(int j=,s=;j<=R;s*=-,j++){
rmp=(s+Mod)*C(R-,j-)%Mod;
(rmp*=Quick_pow(U,R-j))%=Mod;
(rmp*=g[n-R+j-])%=Mod;
(tmp+=rmp)%=Mod;
}
ans=ans*tmp%Mod;
}
printf("%lld\n",ans);
return ;
}
动态规划(计数DP):JLOI 2016 成绩比较的更多相关文章
- [JLOI 2016]成绩比较
Description 题库链接( \(\text{bzoj}\) 不知道为什么过不了啊... \(\text{luogu loj}\) 都能过...就给 \(\text{luogu}\) 的链接了. ...
- Leetcode之动态规划(DP)专题-338. 比特位计数(Counting Bits)
Leetcode之动态规划(DP)专题-338. 比特位计数(Counting Bits) 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数 ...
- 【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
[题意]n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui].B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数.当有一 ...
- 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)
Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...
- HDU5800 To My Girlfriend 背包计数dp
分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i ...
- CodeForces 176B Word Cut (计数DP)
Word Cut Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit St ...
- [DP之计数DP]
其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常 ...
- HDU4815/计数DP
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=4815] 简单说一下题意: 有n道题,每到题答对得分为a[ i ],假如A不输给B的最小概率是P,那么A ...
- HDU 6377 度度熊看球赛 (计数DP)
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
随机推荐
- OC中的字符串常用方法
OC中的字符串常用方法 OC中对字符串进行操作使用了Foundation框架中的NSString类(不可变).NSMutableString类(可变). NSString 1.创建字符串 [objc] ...
- 销毁session
session运行在服务器是单用户,每个session都有一个唯一的sessionid 用法:session.setAttribute("userName", "张三丰& ...
- 【失败】制作CentOS镜像
1.在vmware上安装centos虚拟机,安装过程中设置CPU时,点选 虚拟化Intel VT-x~ 和 虚拟化CPU性能计数器,网络使用NAT模式 2.#mkdir /opt/iso,上传镜像(用 ...
- error signing assembly unknown error
用VS2010 编译 C#工程,出现 Cryptographic failure while signing assembly 'Assembly.dll' -- 'Unknown error (80 ...
- e+开发中的各种问题
1.数据交换后走的查询公式还是controller所配置的公式
- libz.so库分析
from:http://blog.chinaunix.net/uid-12773189-id-84605.html 1.查看库文件是由哪个软件包提供的空闲时打开/usr/lib目录(因为我知道这个目录 ...
- mvc中的OutputCache
mvc4中有一个标记属性OutputCache,用来对ActionResult结果进行缓存,如何理解呢?概括地说,就是当你的请求参数没有发生变化时,直接从缓存中取结果,不会再走服务端的Action代码 ...
- c语言数组的操作
#include<stdio.h> #include<malloc.h> #include<stdlib.h>//exit() struct Arr//定义了一个数 ...
- C# 判断中文字符(字符串)
在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs.通过对字符的unicode编码进行判断来确定字符是否为中文.protected bool ...
- 2016030401 - java性能优化建议
转载自:http://www.open-open.com/lib/view/open1399884636989.html#_label20 1.没有必要时不要使用静态变量 使用静态变量的目的是提高程序 ...