山东省第七届ACM F Feed the monkey (记忆搜索)
来源:互联网 发布:c 编程基础视频教程 编辑:程序博客网 时间:2024/06/05 12:47
/*题意:3种水果,各有a,b,c个,一天喂一种水果,每种水果不能喂连续的n1,n2,n3天,问有多少种喂的方式思路:简单的记忆搜索dp[i][j][k][s][f]表示第一种水果吃掉i个第二种水果吃掉j个,第三种水果剩余k个,以s种水果结尾连续数量 f 在规定范围内的组合种类*/代码:#include <bits/stdc++.h>using namespace std;#define ll long longconst long long maxn = 52;#define mod 1000000007ll dp[maxn][maxn][maxn][4][maxn];int N[4], D[4], sum;int dfs(int a, int b, int c, int t, int d){ if (a > N[1] || b > N[2] || c > N[3] || a + b + c > sum) return 0; for (int i = 1; i <= 3; ++i) { if (t == i && d > D[i]) { return 0; } } if(dp[a][b][c][t][d] != -1) return dp[a][b][c][t][d]; if (a + b + c == sum) return 1; int ans = 0; if(t == 1) { ans = (ans + dfs(a+1,b,c,1,d + 1)) % mod; ans = (ans + dfs(a,b+1,c,2,1)) % mod; ans = (ans + dfs(a,b,c+1,3,1)) % mod; return dp[a][b][c][t][d]=ans; } if(t == 2) { ans = (ans + dfs(a+1,b,c,1,1)) % mod; ans = (ans + dfs(a,b+1,c,2,d + 1)) % mod; ans = (ans + dfs(a,b,c+1,3,1)) % mod; return dp[a][b][c][t][d]=ans; } if(t == 3) { ans = (ans + dfs(a+1,b,c,1,1)) % mod; ans = (ans + dfs(a,b+1,c,2,1)) % mod; ans = (ans + dfs(a,b,c+1,3,d + 1)) % mod; return dp[a][b][c][t][d]=ans; }}int main(){ int Test; scanf("%d", &Test); while (Test--) { memset(dp, -1, sizeof(dp)); scanf("%d%d%d%d%d%d", &N[1], &N[2], &N[3], &D[1], &D[2], &D[3]); int ans = 0; sum = N[1] + N[2] + N[3]; ans = (ans + dfs(1, 0, 0, 1, 1)) % mod; // cout << ans << endl; ans = (ans + dfs(0, 1, 0, 2, 1)) % mod; // cout << ans << endl; ans = (ans + dfs(0, 0, 1, 3, 1)) % mod; cout << ans << endl; } return 0;}
0 0
- 山东省第七届ACM F Feed the monkey (记忆搜索)
- 第七届ACM山东省赛-F Feed the monkey
- 第七届 山东省ACM Feed the monkey(记忆化搜索 OR DP )
- 山东省第七届ACM省赛 Feed the monkey
- 山东省第七届 ACM 省赛 Feed the monkey (dp)
- 山东省第7届ACM省赛 F题 Feed the monkey dp
- 第七届山东省赛 Feed the monkey(dp)
- 第7届山东省赛----sdut 3565 Feed the monkey
- 第七届 山东省ACM The Binding of Isaac(搜索OR暴力。。)
- 第七届ACM山东省赛-E The Binding of Isaac
- 山东省第七届ACM省赛------The Binding of Isaac
- 第七届山东省ACM省赛 E The Binding of Isaac
- sdut3565——Feed the monkey(记忆化DP)
- 山东省第五届ACM省赛 Colorful Cupcakes(记忆化搜索)
- 【第七届山东省ACM竞赛】Square Number
- 2016第七届ACM山东省赛
- 第七届ACM山东省赛-A Julyed
- 第七届ACM山东省赛-B Fibonacci
- CentOS 7 安装mysql
- CentOS 7 生成SSH连接GitHub的SSH-key
- CenOS 7 手撸springboot 自动部署脚本autodeploy.sh
- Skipped 60 frames! The application may be doing too much work on its main thread
- [Template]省选复习计划
- 山东省第七届ACM F Feed the monkey (记忆搜索)
- ACM-动态规划4-公共子序列
- GDOI模拟4.11~4.13总结
- (转)私募基金机构设立、牌照申请、后续运营的最新政策规定和操作流程
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
- 系统延迟及定时机制
- 这可能是webpack最实用的文章了。抓紧上车。(二)
- SLF4J 和 Logback 在 Maven 项目中的使用方法
- android游戏开发实例-可局域网对战的飞行棋(二)