题目链接

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

 #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. .net转的时间戳用java去解析的代码

    /// <summary> /// 转换成java解析一致的时间戳 /// </summary> /// <param name="time"> ...

  2. Delphi中record和packed record的区别

    转载:http://blog.csdn.net/rznice/article/details/6566978 第一种不带packed关键字的结构体表明编译器编译时要求进行字对齐. 而第二种带packe ...

  3. poj 1182:食物链(种类并查集,食物链问题)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44168   Accepted: 12878 Description ...

  4. NPOI读写Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  5. MD5与Base64的思考

    MD5加密是对任意长的数据使用MD5哈稀算法散列为4个32位组,若格式化为ASCII字符则为16字符,若格式化16进制表示,则为32字符.  (MD5的具体算法请参阅相关书籍和资料) MD5广泛用于数 ...

  6. HP SAN Switch參考文檔地址

    HP SAN Switch其實也是基於Linux內核 http://h20566.www2.hpe.com/portal/site/hpsc/template.PAGE/public/psi/manu ...

  7. Ubuntu 上安装 MongoDB

    官方安装文档:https://docs.mongodb.com/manual/installation/ 安装环境: mongodb-linux-x86_64-ubuntu1404-3.2.6.tgz ...

  8. 3D建模与处理软件简介

    [前言]自半年前笔者发表博客“什么是计算机图形学”以来,时常有人来向笔者询问3D模型的构建方法与工具.笔者的研究方向是以3D技术为主,具体包括3D建模,3D处理及3D打印三个方面,在3D建模与处理方面 ...

  9. static 类成员变量 和 static const类成员变量

    1.使用static类的优点: (1)避免与其他类的成员或者全局变量冲突 (2)可以封装 (3)阅读性好 2.static 数据成员独立于该类的任意对象而存在 static数据成员的类型可以是该成员所 ...

  10. POJ 3274 HASH

    题目链接:http://poj.org/problem?id=3274 题意+思路: 点击这里 补充:因为有减法运算,所以可能会造成运算后结果为负数,所以需要把结果统一转换成正数[不然数组下标访问不到 ...