HDU 4597 Play Game (记忆化搜索)
来源:互联网 发布:淘宝女装代理哪家好 编辑:程序博客网 时间:2024/06/08 07:34
题意:有两堆n张的卡片,每张卡片有一个得分,Alice和Bob轮流在两堆卡片的两端取卡片
问Alice先手,取得分数最多为多少;
#include <stdio.h> #include <iostream> #include <algorithm> #include <string.h> #include <queue> #include <math.h> #define M 50 #define LL long long using namespace std;int n;int dp[M][M][M][M];int x[M],y[M],sum1[M],sum2[M];int dfs(int a,int b,int c,int d){if(dp[a][b][c][d]) return dp[a][b][c][d];if(a>b&&c>d) return 0;int ans1=0,ans2=0;if(a<=b){ans1=max(x[a]+dfs(a+1,b,c,d),x[b]+dfs(a,b-1,c,d));}if(c<=d){ans2=max(y[c]+dfs(a,b,c+1,d),y[d]+dfs(a,b,c,d-1));}return dp[a][b][c][d]=sum1[b]-sum1[a-1]+sum2[d]-sum2[c-1]-max(ans1,ans2); }int main(){int t;scanf("%d",&t);while(t--){ scanf("%d",&n);memset(dp,0,sizeof(dp));sum1[0]=0;sum2[0]=0;for(int i=1;i<=n;i++){scanf("%d",&x[i]);sum1[i]=sum1[i-1]+x[i];}for(int i=1;i<=n;i++){ scanf("%d",&y[i]);sum2[i]=sum2[i-1]+y[i];}printf("%d\n",sum1[n]+sum2[n]-dfs(1,n,1,n));}return 0;}
0 0
- HDU 4597 Play Game 记忆化搜索
- hdu 4597 Play Game(记忆化搜索)
- HDU 4597 Play Game 记忆化搜索
- hdu 4597 Play Game【记忆化搜索】
- hdu 4597 Play Game (记忆化搜索)
- 【HDU】4597 Play Game(DP+记忆化搜索)
- HDU 4597 Play Game (记忆化搜索)
- HDU 4597 Play Game (DP,记忆化搜索,博弈)
- hdu 4597 Play Game (记忆化搜索,区间dp)
- Play Game+hdu+记忆化搜索
- HDU 4597 Play Game(记忆化)
- HDU 4597 Play Game(四维记忆化搜索)
- hdu 4597 Play Game 记忆化搜索 区间dp
- HDU ACM 4597 Play Game ->区间DP+记忆化搜索
- HDU 4597 Play Game (DP 记忆话搜索)
- hdu 4597 2013吉林通化邀请赛 Play Game 记忆化搜索
- HDU 4597 Play Game (记忆化搜索)无语的节奏
- HDU 4597 Play Game[博弈论 负值最大函数 记忆化搜索]
- AsyncTask
- 黑马程序员 java高新技术 代理
- Unity的安装
- Windows下Java开发环境的搭建以及个人对path和classPath的理解。
- Webdnpro UI控件开发篇 Table控件使用二(每行使用不同的颜色)
- HDU 4597 Play Game (记忆化搜索)
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
- (续)一个demo弄清楚位图在内存中的存储结构
- SNS网站Feed功能设计
- 兼容多系统的开发
- Linux下配置VNC
- 上网时间管理插件
- 华为初级——(练习用)挑7
- 按钮设置成透明的方法