题目链接

什么都不想说,最近状态暴跌。。

 #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的更多相关文章

  1. hdu 4597 Play Game(记忆化搜索)

    题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...

  2. 博弈dp入门 POJ - 1678 HDU - 4597

    本来博弈还没怎么搞懂,又和dp搞上了,哇,这真是冰火两重天,爽哉妙哉. 我自己的理解就是,博弈dp有点像对抗搜索的意思,但并不是对抗搜索,因为它是像博弈一样,大多数以当前的操作者来dp,光想是想不通的 ...

  3. hdu 4597 + uva 10891(一类区间dp)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...

  4. hdu 4597 Play Game 区间dp

    Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...

  5. HDU 4597 Play Game(区间DP(记忆化搜索))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 题目大意: 有两行卡片,每个卡片都有各自的权值. 两个人轮流取卡片,每次只能从任一行的左端或右端 ...

  6. Hdu 4597记忆化搜索

    好久没有做题了,水平已经完全在学弟之下了. 一个吉林邀请赛最水的题目.:( 其实这题一看到数据范围,只可以想到思路,直接爆搜,加个记忆化. 这题虽然A了,但是我还是没太想清楚一些边界情况,心虚着A了. ...

  7. HDU 4597 记忆化搜索

    ² 博弈取牌—记忆化搜索 题目描述: 有两副带有数字的牌,(数字>0)两人轮流取,取中了某张牌,自己的分数就加上牌上的数字,但只能从两端取,每人都会用最优的策略使得自己的分数最高.问A先取,他能 ...

  8. HDU 4597 Play Game 记忆化DP

    Play Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Proble ...

  9. HDU 4597 Play Game(记忆化搜索,深搜)

    题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...

随机推荐

  1. Delphi中的变量作用域简介

    1.在函数或过程中声明的变量是局部变量,只能在函数或过程中使用 2.在单元的implementation部分声明的变量是单元级的(又称模块级.窗体级)变量,该单元的所有函数与过程都能使用,其他引用该单 ...

  2. ArcGIS ElementLayer上放置Windows控件

    ElementLayer是ArcGIS API for Silverlight/WPF中的一种图层类型,主要用来承载Silverlight/WPF中的UIElement对象(UIElement),使用 ...

  3. POJ3415 Common Substrings(后缀数组 单调栈)

    借用罗穗骞论文中的讲解: 计算A 的所有后缀和B 的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于k 的部分全部加起来.先将两个字符串连起来,中间用一个没有出现过的字符隔开.按height ...

  4. 7-13IN和NOT IN 子查询

    IN后面的子查询可以返回多条记录. SELECT ...FROM  WHERE 查询表达式 IN(子查询) 常用IN替换等于(=)的比较子查询. 用法: (1)使用 :IN关键字可以使父查询匹配子查询 ...

  5. 新浪微博的账号登录及api操作

    .sina.php <?php /** * PHP Library for weibo.com * * @author */ class sinaPHP { function __constru ...

  6. php几个常用的概率算法(抽奖、广告首选)

    做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的 ...

  7. WebBrowser控件打开https站点

    背景: 与上一篇博文一样,此文亦是由于开发DropboxAPI中遇到问题衍生出来的.由于需要重定向https类型网站,但自己的https证书是自签名的,总是提示'网站的安全证书存在问题'. 鉴此,查了 ...

  8. 串口编程 tcflush()函数 (转)

    tcflush函数刷清(扔掉)输入缓存(终端驱动法度已接管到,但用户法度尚未读)或输出缓存(用户法度已经写,但尚未发送). int tcflush(int filedes,int quene)  qu ...

  9. 【HTML5 video】video标签的部分属性解析

    转自:http://www.cnblogs.com/kiter/archive/2013/02/25/2932157.html 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Th ...

  10. CSS3_loading效果

    写个div给他个基本样式: <body> <div class="load-container load" id="loader" > ...