动态规划(计数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 ...
随机推荐
- hibernate_validator_01
1.环境准备(Maven工程) <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...
- Codevs 4600 [NOI2015]程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 在实现程序自动分析的过程中,常常需 ...
- Android中的自定义属性的实现
Android开发中,如果系统提供的View组件不能满足我们的需求,我们就需要自定义自己的View,此时我们会想可不可以为自定义的View定义属性呢?答案是肯定的.我们可以定义自己的属性,然后像系统属 ...
- java输入输出流总结 转载
一.基本概念 1.1 什么是IO? IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是 ...
- nodejs实现单文件上传。
new了formidable的一个实例. formidable模块可以直接捕获当前数据流的状态并返回文件路径. 主要使用了file事件和end事件. var form = new formidable ...
- nodejs -formidable模块实现图片上传。
var form = new formidable.IncomingForm(); form.uploadDir="/localnonobank/test/images/"; ...
- swift 语法 - 以及学习资料
附上一些swift的一下学习资料: 1.Swift语法介绍官方英文版:The Swift Programming Language 2.Swift与Objective-C相互调用Using Swift ...
- Xcode 修改工程名称
总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode5以前的版本,所以解决好了在这里mark一下,给需要的人. 目标为:将项目名XCD4改成xcd5. 先上结果图 ...
- OC与JS交互前言-b
一.WebView加载HTML UIWebView提供了三个方法来加载html资源 1. loadHTMLString:baseURL: 把html文件的内容以字符串的形式加载到webView里面,然 ...
- XCode 项目配置说明
初学XCode最让人头疼的就是项目各属性设置,各种不解,这里做个总结: 项目配置: 基本项(Basic) 1.Architectures(指令集)——设置你想支持的指令集,目前ios的指令集有以下几种 ...