HDU 4597 Play Game
什么都不想说,最近状态暴跌。。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int p[][];
int sum[][];
int dp1[][],dp2[][];
int dp[][][][];
int dfs1(int x1,int y1)
{
if(dp1[x1][y1])
return dp1[x1][y1];
if(x1 == y1)
return dp1[x1][y1] = p[][x1];
return dp1[x1][y1] = max(sum[][y1]-sum[][x1]-dfs1(x1+,y1)+p[][x1],sum[][y1-]-sum[][x1-]-dfs1(x1,y1-)+p[][y1]);
}
int dfs2(int x1,int y1)
{
if(dp2[x1][y1])
return dp2[x1][y1];
if(x1 == y1)
return dp2[x1][y1] = p[][x1];
return dp2[x1][y1] = max(sum[][y1]-sum[][x1]-dfs2(x1+,y1)+p[][x1],sum[][y1-]-sum[][x1-]-dfs2(x1,y1-)+p[][y1]);
}
int dfs(int x1,int y1,int x2,int y2)
{
int maxz = ;
if(dp[x1][y1][x2][y2])
return dp[x1][y1][x2][y2];
if(x1 == y1&&x2 == y2)
return dp[x1][y1][x2][y2] = max(p[][x1],p[][x2]);
else if(x1 == y1)
{
maxz = sum[][y2]- sum[][x2-]-dfs2(x2,y2)+p[][x1];
maxz = max(maxz,sum[][y1]-sum[][x1-]+sum[][y2]-sum[][x2]-dfs(x1,y1,x2+,y2)+p[][x2]);
maxz = max(maxz,sum[][y1]-sum[][x1-]+sum[][y2-]-sum[][x2-]-dfs(x1,y1,x2,y2-)+p[][y2]);
}
else if(x2 == y2)
{
maxz = sum[][y1] - sum[][x1-] - dfs1(x1,y1) + p[][x2];
maxz = max(maxz,sum[][y1]-sum[][x1]+sum[][y2]-sum[][x2-]-dfs(x1+,y1,x2,y2)+p[][x1]);
maxz = max(maxz,sum[][y1-]-sum[][x1-]+sum[][y2]-sum[][x2-]-dfs(x1,y1-,x2,y2)+p[][y1]);
}
else
{
maxz = max(maxz,sum[][y1]-sum[][x1]+sum[][y2]-sum[][x2-]-dfs(x1+,y1,x2,y2)+p[][x1]);
maxz = max(maxz,sum[][y1-]-sum[][x1-]+sum[][y2]-sum[][x2-]-dfs(x1,y1-,x2,y2)+p[][y1]);
maxz = max(maxz,sum[][y1]-sum[][x1-]+sum[][y2]-sum[][x2]-dfs(x1,y1,x2+,y2)+p[][x2]);
maxz = max(maxz,sum[][y1]-sum[][x1-]+sum[][y2-]-sum[][x2-]-dfs(x1,y1,x2,y2-)+p[][y2]);
}
return dp[x1][y1][x2][y2] = maxz;
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
memset(dp,,sizeof(dp));
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
memset(sum,,sizeof(sum));
scanf("%d",&n);
for(i = ; i <= ; i ++)
{
for(j = ; j <= n; j ++)
{
scanf("%d",&p[i][j]);
sum[i][j] = sum[i][j-] + p[i][j];
}
}
printf("%d\n",dfs(,n,,n));
}
return ;
}
HDU 4597 Play Game的更多相关文章
- hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...
- 博弈dp入门 POJ - 1678 HDU - 4597
本来博弈还没怎么搞懂,又和dp搞上了,哇,这真是冰火两重天,爽哉妙哉. 我自己的理解就是,博弈dp有点像对抗搜索的意思,但并不是对抗搜索,因为它是像博弈一样,大多数以当前的操作者来dp,光想是想不通的 ...
- hdu 4597 + uva 10891(一类区间dp)
题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...
- hdu 4597 Play Game 区间dp
Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...
- HDU 4597 Play Game(区间DP(记忆化搜索))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 题目大意: 有两行卡片,每个卡片都有各自的权值. 两个人轮流取卡片,每次只能从任一行的左端或右端 ...
- Hdu 4597记忆化搜索
好久没有做题了,水平已经完全在学弟之下了. 一个吉林邀请赛最水的题目.:( 其实这题一看到数据范围,只可以想到思路,直接爆搜,加个记忆化. 这题虽然A了,但是我还是没太想清楚一些边界情况,心虚着A了. ...
- HDU 4597 记忆化搜索
² 博弈取牌—记忆化搜索 题目描述: 有两副带有数字的牌,(数字>0)两人轮流取,取中了某张牌,自己的分数就加上牌上的数字,但只能从两端取,每人都会用最优的策略使得自己的分数最高.问A先取,他能 ...
- HDU 4597 Play Game 记忆化DP
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Proble ...
- HDU 4597 Play Game(记忆化搜索,深搜)
题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...
随机推荐
- VS2010 自动跳过代码现象
今日,发现在Release的调试模式下,VS2010会“莫名其妙”的跳过一些代码不执行. 经实验,初步判断可能的原因:预处理器指令或编译器/连接器优化. 20150703更新: 部分代码: m_pTa ...
- .net学习之Attribute特性和EF关键知识点
一.Attribute特性/标签1.Attribute用来对类.属性.方法等标注额外的信息,贴一个标签简单的说,定制特性Attribute,本质上就是一个类,它为目标元素提供关联附加信息,并在运行时以 ...
- Android 中 Internal Storage 和 External Storage 的区别
Android 存储:Internal Storage的用法以及与External storage 的区别 - 庄宏基的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net ...
- scrollTop和scrollLeft的兼容解决万全方法
1.各浏览器下 scrollTop的差异 IE6/7/8: 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 scrollTop高度 : 对于有do ...
- 避免在ASP.NET Core中使用服务定位器模式
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:服务定位器(Service Locator)作为一种反模式,一般情况下应该避免使用,在 ...
- Shell脚本获取C语言可执行程序返回值
#!/bin/sh #./test是c程序,该程序 返回0 ./test OP_MODE=$? echo $OP_MODE # $? 显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误.
- 调整vbox虚拟机下的linux全屏模式及分辨率
>>Step1 在VirtualBox菜单栏中选择[设备]->[安装增强功能] >>Step2 点击右上角的[齿轮]图标,然后选择[Log Out],重新登录即可 lin ...
- 通过yeelink平台监控树莓派CPU温度变化
通过yeelink平台监控树莓派温度,是很多派友入门第一课.作为一名刚入手树莓派裸机不久的新手,在没有其他硬件支持的情况,通过yeelink平台来监控树莓派CPU温度变化,也是我学习树莓派.学习智能硬 ...
- HDU 5145 NPY and girls 莫队+逆元
NPY and girls Problem Description NPY's girlfriend blew him out!His honey doesn't love him any more! ...
- Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合
在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...