codeforces #118D (背包)
来源:互联网 发布:天狼星加密软件多少钱 编辑:程序博客网 时间:2024/04/30 14:34
题意:
给出n1个序列A,n2个序列B。A最多可以k1个连续,B最多可以k2个连续。问排列的数。
题解:
真的。。。。真的。。。。没想到是背包啊啊啊啊!!!啊啊 !!
走起!
大犇:"这种有固定资源,并且有离散化消耗的,一定要忘背包上靠。“
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<map>using namespace std;typedef __int64 lld;const int oo=0x3f3f3f3f;const lld OO=1e18;const int Mod=1e8;const int maxn=3000+5;lld dp[maxn][maxn][2];int min(int a,int b,int c){ return min(a,min(b,c));}int main(){ int n,m,k1,k2; lld ans; while(scanf("%d %d %d %d",&n,&m,&k1,&k2)!=EOF) { memset(dp,0,sizeof dp); dp[0][0][0]=dp[0][0][1]=1; for(int i=1;i<=n+m;i++) { for(int j=min(n,i);j>=1;j--) { for(int t=1;t<=j&&t<=k1;t++) { if(i-j<=m) dp[i][j][0]=(dp[i][j][0]+dp[i-t][i-j][1]+Mod)%Mod; } } for(int j=min(m,i);j>=1;j--) { for(int t=1;t<=j&&t<=k2;t++) { if(i-j<=n) dp[i][j][1]=(dp[i][j][1]+dp[i-t][i-j][0]+Mod)%Mod; } } } ans=(dp[n+m][n][0]+dp[n+m][m][1]+Mod)%Mod; printf("%I64d\n",ans); } return 0;}/***/
0 0
- codeforces #118D (背包)
- codeforces 118D Caesar's Legions 背包问题
- [背包 贪心] Codeforces #365D. Free Market
- Codeforces 474D - Flowers(0 - 1背包)
- Codeforces Round #273 (Div. 2)D. Red-Green Towers(背包)
- codeforces 510D 01背包的map形式
- Codeforces Round #383 (Div. 2)D-(并查集&分组背包)|(搜索&01背包)
- codeforces 118D 记忆搜索
- codeforces 118D D. Caesar's Legions(dp)
- CodeForces 118D Caesar's Legions
- Codeforces 118D Caesar's Legions
- [CodeForces 118D]Caesar's Legions[DP]
- Codeforces 118D Caesar's Legions DP
- D - 01背包
- D - 完全背包
- D 分组背包
- D-Balance|01背包
- 【背包专题】D
- 简单的01背包问题(采药)
- three.js 源码注释(八十五)extras/geometries/PolyhedronGeometry.js
- 常用正则表达式
- pugixml 一个xml解析库 简单快速, 支持XPath表达式, 感谢作者
- eclipse中断点调试不起作用的问题 unable to install breakpoint in
- codeforces #118D (背包)
- three.js 源码注释(八十六)extras/geometries/TubeGeometry.js
- Android Studio代码调试
- JavaScript实现鼠标拖动滑块
- NYOJ 题目1070 诡异的电梯【Ⅰ】(dp)
- 目前喜欢的二种编程字体比较
- java中的匿名内部类总结
- Go语言实现二叉查找树(Binary Search Trees)
- python学习系列(九) --- 带参数执行命令并得到输出结果