HYSBZ/BZOJ 1037 [ZJOI2008] 生日聚会Party - dp
来源:互联网 发布:浙江网络诈骗立案标准 编辑:程序博客网 时间:2024/05/18 19:20
题目描述
分析:
dp[i][j][p][q]表示前i个boy,j个girl,男孩数量-女孩数量的最大值为p,女孩数量-男孩数量的最大值为q。因为可能没有女孩或者男孩,p,q可能为负数,就用0表示(p,q是最大值,p,q为负的情况只有没有女孩或者没有男孩这种情况)
dp[i][j][p][q]=dp[i-1][j][p-1][q+1] + dp[i][j-1][p+1][q-1]
没办法填表,用刷表法:
dp[i][j][p][q] 影响 dp[i+1][j][p+1][q-1] 和 dp[i][j+1][p-1][q+1]
#include<cstdio>#include<algorithm>using namespace std;#define Mod 12345678#define MAXN 150#define MAXK 20int n,m,k,dp[MAXN+5][MAXN+5][MAXK+5][MAXK+5],ans;int main(){ scanf("%d%d%d",&n,&m,&k); //dp[i][j][p][q] -> dp[i+1][j][p+1][q-1] , dp[i][j+1][p-1][q+1] dp[0][0][0][0]=1; for(int i=0;i<=n;i++) for(int j=0;j<=m;j++){ for(int p=0;p<=k;p++) for(int q=0;q<=k;q++){ dp[i+1][j][p+1][max(q-1,0)]=(dp[i+1][j][p+1][max(q-1,0)]+dp[i][j][p][q])%Mod; dp[i][j+1][max(p-1,0)][q+1]=(dp[i][j+1][max(p-1,0)][q+1]+dp[i][j][p][q])%Mod; } } for(int p=0;p<=k;p++) for(int q=0;q<=k;q++){ ans=(ans+dp[n][m][p][q])%Mod; } printf("%d\n",ans%Mod);}
0 0
- HYSBZ/BZOJ 1037 [ZJOI2008] 生日聚会Party - dp
- [BZOJ 1037][ZJOI2008]生日聚会Party(DP)
- BZOJ 1037: [ZJOI2008]生日聚会Party DP
- BZOJ 1037: [ZJOI2008]生日聚会Party DP
- 【DP】[ZJOI2008][HYSBZ/BZOJ1037]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party (DP)
- BZOJ 1037: [ZJOI2008]生日聚会Party
- 【bzoj 1037】: [ZJOI2008]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party
- bzoj 1037: [ZJOI2008]生日聚会Party
- bzoj 1037 [ZJOI2008]生日聚会Party
- 1037: [ZJOI2008]生日聚会Party dp
- 1037: [ZJOI2008]生日聚会Party
- 1037: [ZJOI2008]生日聚会Party
- 1037: [ZJOI2008]生日聚会Party
- 1037: [ZJOI2008]生日聚会Party
- BZOJ 1037-生日聚会Party(DP)
- BZOJ P1037[ZJOI2008]生日聚会Party
- poj2926 2010.2.26
- Java设计模式(十八)----命令模式
- hdu3220 2010.3.1
- HDU 3639 Hawk-and-Chicken(强连通分量+缩点)
- XStream的使用(2)——集合形式的 JavaBean 转化为 xml
- HYSBZ/BZOJ 1037 [ZJOI2008] 生日聚会Party - dp
- Etaoin Shrdlu 2010.3.2
- frm.Show();Application.Run
- Android开发笔记(五十七)录像录音与播放
- hdu2822 2010.3.2
- Gradle(1)——基本概念与Android Studio Gradle结构
- Activity之间数据交流(onActivityResult的用法)
- 并查集 bnuoj51275 道路修建 Large
- Android6.0的Looper源码分析(1)