hdu4597 Play Game DP
题目链接: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的更多相关文章
- hdu4597 区间dp
//Accepted 1784 KB 78 ms //区间dp //dp[l1][r1][l2][r2] 表示a数列从l1到r1,b数列从l2到r2能得到的最大分值 // #include <c ...
- hdu4597 Play Game 区间DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 全国邀请赛通化赛区第8题--题目重现 思路: 区间DP的思想,想法是队友想出来的,感觉很秒,自己 ...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4142 Solved: 1964[Submit][Statu ...
- 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 ...
- AEAI DP V3.7.0 发布,开源综合应用开发平台
1 升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
- BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4026 Solved: 1473[Submit] ...
- [斜率优化DP]【学习笔记】【更新中】
参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9812 Solved: 3978[Submit][St ...
随机推荐
- 自适应的tab菜单栏
代码部分: Css代码:*{ margin:0px; padding:0px; font-size:62.5%;}body{ background-color:#FFFFFF;}.zw-test-ti ...
- post和get请求的区别
post和get请求的区别: 1.post发送的数据在请求体中,用户看不到 get发送的数据在地址栏中 2.post请求中有content-type,作用是告诉服务器,发送给服务器的数据格式,是和ur ...
- Spring框架下的单元测试
一.使用spring中对Junit框架的整合功能 除了junit4和spring的jar包,还需要spring-test.jar.引入如下依赖: <dependency> <grou ...
- POPTEST老李谈钩子
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- 腾讯IVWEB团队:WebRTC 点对点直播
作者:villainthr 摘自:villainhr WebRTC 全称为:Web Real-Time Communication.它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer- ...
- 【iOS】7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 4月5日--课堂笔记--JS内置对象
JavaScript 4.5 一. JS内置对象 1.数组Array a)创建语法1:var arr=new Array(参数); i. 没有参数:创建一个初始容量为0的数组 ii. ...
- sleep()和wait()的区别 --- 快入睡了,突然想起一个知识点,搞完就睡
自从开了博客之后,大部分是转发的,不断的ctrl+c和ctrl+v,知识是越屯越多,吸收的却很少,后来越来越懒,直接保存链接了. 我已经认识到了自己的错误,自己查询到的这些知识,以后还是会定期保存的, ...
- day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
今天再浏览大淘宝首页时,突然看到这么一个东东: ,顿时好费解,莫非万恶的IE浏览器认识到自己以往的罪孽,开始兼容chrome了??! 于是本着不懂就百度的神精,开始纵横于各大铁耙,勃哥,终于找到了许许 ...
- 谱聚类(Spectral clustering)(2):NCut
作者:桂. 时间:2017-04-13 21:19:41 链接:http://www.cnblogs.com/xingshansi/p/6706400.html 声明:欢迎被转载,不过记得注明出处哦 ...