题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597

感觉很不错的区间DP,又做了一遍,感觉自己对边界的处理还是很欠缺

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
#define maxn 21
int sum1[maxn];
int sum2[maxn];
int q1[maxn];
int q2[maxn];
int n;
int dp[maxn][maxn][maxn][maxn];
int dfs(int s1, int e1,int s2,int e2)
{
int tmp1,tmp2;
int ans;
if(s1== && s2== && e1== && e2==) return dp[s1][e1][s2][e2]=;
if(dp[s1][e1][s2][e2]>=) return dp[s1][e1][s2][e2];
if(s1== && e1== && s2==e2) return dp[][][s2][e2]=q2[s2];
if(s1==e1 && s2== && e2==) return dp[s1][e1][][]=q1[s1];
if(s1== && e1 ==)
ans=max(q2[s2]+sum2[e2]-sum2[s2]-dfs(,,s2+,e2),q2[e2]+sum2[e2-]-sum2[s2-]-dfs(,,s2,e2-));
else
if(s2== && e2 ==)
ans=max(q1[s1]+sum1[e1]-sum1[s1]-dfs(s1+,e1,,),q1[e1]+sum1[e1-]-sum1[s1-]-dfs(s1,e1-,,));
else
if(s1==e1 && s2==e2)
ans=max(q1[s1],q2[s2]);
else
if(s1==e1)
{
tmp1=max(q2[s2]+sum2[e2]-sum2[s2]+q1[s1]-dfs(s1,e1,s2+,e2),q2[e2]+sum2[e2-]-sum2[s2-]+q1[s1]-dfs(s1,e1,s2,e2-));
tmp2=max(tmp1,q1[s1]+sum2[e2]-sum2[s2-]-dfs(,,s2,e2));
ans=max(tmp1,tmp2);
}
else
if(s2==e2)
{
tmp1=max(q1[s1]+sum1[e1]-sum1[s1]+q2[s2]-dfs(s1+,e1,s2,e2),q1[e1]+sum1[e1-]-sum1[s1-]+q2[s2]-dfs(s1,e1-,s2,e2));
tmp2=max(tmp1,q2[s2]+sum1[e1]-sum1[s1-]-dfs(s1,e1,,));
ans=max(tmp1,tmp2);
}
else
{
tmp1=max(q1[s1]+sum2[e2]-sum2[s2-]+sum1[e1]-sum1[s1]-dfs(s1+,e1,s2,e2),q1[e1]+sum2[e2]-sum2[s2-]+sum1[e1-]-sum1[s1-]-dfs(s1,e1-,s2,e2));
tmp2=max(q2[s2]+sum2[e2]-sum2[s2]+sum1[e1]-sum1[s1-]-dfs(s1,e1,s2+,e2),q2[e2]+sum2[e2-]-sum2[s2-]+sum1[e1]-sum1[s1-]-dfs(s1,e1 ,s2,e2-));
ans=max(tmp1,tmp2);
}
return dp[s1][e1][s2][e2]=ans;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
sum1[]=sum2[]=;
for(int i=;i<=n;i++)
{
scanf("%d",&q1[i]);
sum1[i]=sum1[i-]+q1[i];
}
for(int i=;i<=n;i++)
{
scanf("%d",&q2[i]);
sum2[i]=sum2[i-]+q2[i];
}
memset(dp,-,sizeof(dp));
dp[][n][][n]=dfs(,n,,n);
cout<<dp[][n][][n]<<endl;
}
return ;
}

hdu4597 Play Game DP的更多相关文章

  1. hdu4597 区间dp

    //Accepted 1784 KB 78 ms //区间dp //dp[l1][r1][l2][r2] 表示a数列从l1到r1,b数列从l2到r2能得到的最大分值 // #include <c ...

  2. hdu4597 Play Game 区间DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 全国邀请赛通化赛区第8题--题目重现 思路: 区间DP的思想,想法是队友想出来的,感觉很秒,自己 ...

  3. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  4. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  5. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  6. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  7. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  8. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  9. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

随机推荐

  1. iOS开发之数据存储之Core Data

    1.概述 Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数据操作期间,不需要 ...

  2. 彻底理解容器类(2)------- AbstractCollection深入了解

    h2 { background-color: Skyblue } AbstractCollection认识 AbstractCollection是Collection接口的抽象实现.实现了一部分Col ...

  3. openfire当中的Custom Database Integration Guide的配置

    openfire官网配置的链接为:Custom Database Integration Guide 按照上面的步骤一步步配置在xml当中,发现始终不起作用,最后在stackoverflow找到的链接 ...

  4. git操作详解

    前言:一般公司git的master主干与线上代码保持一致,在使用git的时候,偶尔会发生一些莫名其妙的事情,很容易导致运营事故.so- 总结一下经常使用的git命令以及git的一些小坑,方便日后查阅 ...

  5. 按条件生成j随机json包:randomjson

    前端开发中,在做前后端分离的时候,经常需要手写json数据,有2个问题特别揪心: 1,数据是写死的,不能按一定的条件随机生成长度不一,内容不一的数据 2,写数组的时候,如果有很多条,需要一条一条地写, ...

  6. 【转】轻应用、Web App、Native App三者分别是什么?

      一.什么是Native app Native App是一种基于智能手机本地操作系统如IOS.Android.WP并使用原生程式编写运行的第三方应用程序,也叫地app.NativeApp因为位于平台 ...

  7. python修行:练习购物车

    product_list = [ ('Iphone',5800), ('Mac Pro',9800), ('Bike',800), ('Watch',10600), ('Coffee',31), (' ...

  8. jmeter JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  9. 课堂博客-----TreeView+++++XML形成博客

    什么是XML? 解析:XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言) xml ...

  10. 数列分段Section II

    洛谷传送门 输入时处理出最小的答案和最大的答案,然后二分答案即可. 其余细节看代码 #include <iostream> #include <cstdio> using na ...