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 ...
随机推荐
- Nginx+Tomcat动静分离脚本
#!/bin/bashsetenforce 0systemctl stop firewalldtar -zxvf nginx-1.8.0.tar.gz -C /usr/src/ cd /usr/src ...
- 使用 SLF4J + LogBack 构建日志系统(转)
转载自:http://www.cnblogs.com/mailingfeng/p/3499436.html 上次我们讨论了如何选择一个好的开源日志系统方案,其中的结论是:使用 SLF4J + LogB ...
- webService请求方式快速生成代码 (Postman)
Postman 这个东西只能在外网下载,是Goole一个插件. 1.FQ到外网,这里就不具体介绍怎么FQ了 2.上到谷歌浏览器,找到更过工具--->扩张程序--->获取更多扩张程序 3.在 ...
- smartgit试用到期不用序列号怎么继续使用
方法1 1:进入C盘,搜索SmartGit,出现\AppData\Roaming\syntevo: 2:进入文件7.1和8,这个有不同的版本可以使用,上次里面的setting.xml文件 3:重新打开 ...
- SVN:重命名文件之后不允许提交
提交文件所属的目录,这样可以提交成功.
- Linux Smaba服务器配置
Linux系统默认已经安装了Samba,但是没有安装Samba服务: 1,先查看安装情况:rpm -qa|grep samba 根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包. 我的安装情况 ...
- cssreset
/** * http://cssreset.com */html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, ...
- ArrayList,LinkedList的对比
ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需 ...
- 回车键搜索 - Enter搜索
今天写了个 搜索 想来发表发表 <!DOCTYPE html><html lang="en"><head> <meta charset= ...
- js中字符串转换为日期型
简介:字符串转日期型函数 传入一个字符串格式的日期,如何转换为日期型的.以下为转换方案. //字符串转换为日期函数,返回日期型(传入的日期格式2014-04-22) function StringTo ...