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 ...
随机推荐
- nfs服务端配置文件详解
配置参数语法 配置文件路径 /etc/exports 可以使用#进行注释说明 一个完整的配置实例至少需要3个参数 1.被共享的目录 必须是存在的目录 2.向谁共享 可以指定主机或网络范围,支持通配符* ...
- PRINCE2认证
PRINCE是PRoject IN Controlled Environment(受控环境下的项目管理)的简称. PRINCE2描述了如何以一种逻辑性的.有组织的方法,按照明确的步骤对项目进行管理.它 ...
- Where T:Class,new()的使用
当我们使用泛型的时候,有时候就会提示我们T必须是引用类型而无法进行下去,其实我们学泛型的时候也应该了解到这个T的使用场合,他可以是值类型也可以是引用类型,但是我们某些场合就只能使用引用类型比如EF中的 ...
- 查看linux版本相关命令
Linux系统中,平常要装软件需要知道该系统相关信息,特别是刚刚进入公司,要接手某个系统,需要配置相关服务的时候,必须要先知道该系统的一些信息包括:内核版本信息.发行版本信息. #lsb_releas ...
- img 的 3px
今天在做一个测试的时候碰到的问题:用一个 div 包裹一个 img ,代码如下: html代码: <div class="box"> <img src=" ...
- 如何高效实现扫描局域网IP、主机名、MAC和端口
近几年工作经常使用RFID识读器,智能家居网关,温湿度传感器.串口服务器.视频编码器等,一般是有串口和网口,由于现场原因一般较少使用串口,大多使用网口.连接方法是IP地址和端口,有的设备带搜索软件,有 ...
- 程序设计 之 C#实现《拼图游戏》
功能描述: 1.用户自定义上传图片 2.游戏难度选择:简单(3*3).一般(5*5).困难(9*9)三个级别 3.纪录完成步数 模块: 1.拼图类 2.配置类 3.游戏菜单窗口 4.游戏运行窗口 -- ...
- js继承之原型链方式实现
温故而知新: 在之前的文章已经重点了解了原型对象,今天就理一理这个原型对象在原型链式的继承中的使用 function a(x,y){this.x=x;this.y=y;} //定义一个函数,当构造函数 ...
- 利用callKit实现电话防骚扰
callKit框架是ios10之后更新的一个框架,代替了原来的CoreTelephony.framework,使用CallKit可以实现电话的拦截 首先创建一个项目之后,创建一个target,选择Ca ...
- iOS WebView你需要的问题答案
一.UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页: a. 加载 URL WebView = [[UIWebView alloc] initWithFr ...