1875: 蛤玮的财宝

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 530  Solved: 116

SubmitStatusWeb Board

Description

蛤玮和他的妹子出海游玩,不小心遭遇了海难,他们醒来之后发现自己到了一座金银岛.岛主非常好心的告诉他们在岛的另一边有船可以送他们回家.
这座岛可以看成n*m的矩阵,蛤玮他们在位置(1,1),而船在位置(n,m).蛤玮发现金银岛遍地都是金子,每个格子里有价值a[i,j]的金子,他和妹子打算在回去的路上带一些走.如果他们路过了位置(i,j),就可以假装系鞋带捡走地上的金子.为了不引起怀疑,他们在走的时候只能往接近码头的方向走,即如果蛤玮现在在(i,j),他只能移动到(i+1,j)或者(i,j+1).为了能拿走更多的金子,蛤玮和妹子决定装作互相不认识,这样他们就可以分开走,从而拿到更多的金子.
蛤玮和他妹子想知道他们最多能拿走多少金子.
注意如果蛤玮和他妹子经过了相同的地方,只能得到一次金子,因为地上的捡完就没有了.

Input

 
T(1<=T<=10),表示数据组数.
每组数据第一行n,m(1<=n,m<=100),接下来n行,每行m个数,第i行第j列的值a[i,j](1<=a[i,j]<=1000)表示位置(i,j)的金子的价值.

Output

 
每组数据输出一行,蛤玮和他妹子能拿到的金子总价的最大值.

Sample Input

1
2 2
2 1
1 2

Sample Output

6
同上一道双线DP类似思路,不过注意最后加上两个起点和终点的值即可。

#include<bits/stdc++.h>
using namespace std;
#define CIN(a) scanf("%d",&a)
#define ql(a) memset(a,0,sizeof(a))
int dp[210][105][105];
int e[105][105];
int main()
{
int t,i,j,n,m;
int x1,x2,k;
CIN(t);
while(t--){ql(e),ql(dp);
CIN(n),CIN(m);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j) CIN(e[i][j]);
for(k=1;k<n+m-2;++k)
for(x1=1;x1<=n;++x1)
for(x2=1;x2<=n;++x2){
int y1=k+2-x1,y2=k+2-x2;
if(x1==x2||y1<0||y2<0||y1>m||y2>m) continue;
dp[k][x1][x2]=max(max(dp[k-1][x1][x2],dp[k-1][x1][x2-1]),max(dp[k-1][x1-1][x2],dp[k-1][x1-1][x2-1]))+e[x1][y1]+e[x2][y2];
}

cout<<max(dp[k-1][n-1][n],dp[k-1][n][n-1])+e[n][m]+e[1][1]<<endl;
}
return 0;
}

注意处理起点如果没有初始化dp[0][x1][x2]的话最后切记加上e[1][1].

也可以选择先处理dp[0]不过不划算啦

zzuli 1875多线DP的更多相关文章

  1. luogu 1169 [ZJOI2007]棋盘制作 悬线dp

    悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...

  2. zzuli 2172 队列优化dp

    2172: GJJ的日常之购物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 9  Solved: 8 SubmitStatusWeb Board De ...

  3. luogu 4147 玉蟾宫 悬线DP

    Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in",& ...

  4. dp--悬线dp P4147 玉蟾宫

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  5. displayport

    去年买了一张ATI的显卡,但是很坑爹的是显卡后面没有VGA接口,除了一个HDMI,另外两个接口不认识,后来认识了DVI,用DVI连接显示器,剩下一个接口是什么一直没管,前两天电脑清灰,感兴趣了,去查了 ...

  6. C++ 计算直线的交点数(动态规划)

    问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1466 Problem Description 平面上有n条直线,且无三线共点,问这些直线能有多少种不同 ...

  7. MIPI-DSI协议

    MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟.MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的 ...

  8. BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )

    对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...

  9. P1169 [ZJOI2007]棋盘制作 DP悬线法

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...

随机推荐

  1. QQ群免IDKEY加群PHP源码

    加群链接需要idkey的,该源码自动解析idkey,实现免idkey加群. 该源码来自彩虹秒赞系统. 例如:api.yum6.cn/qqun.php?qun=463631294 <?php /* ...

  2. python之路----初识面向对象(二)

    类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...

  3. SaltStack安装及配置

    1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合 ...

  4. mysql的数据类型和字符集

    MySQL的数据类型 MySQL数据库支持的数据类型主要有以下几种: 整型 浮点型 字符 BLOB型 枚举和集合类型 JSON类型(MySQL5.7新增加的支持) 整型 整数类型是数据库中最基本的数据 ...

  5. Linux 安装JDK(jdk-8u121-linux-x64.tar.gz)

    Linux 安装JDK(jdk-8u121-linux-x64.tar.gz) 一.JDK准备 1.1 文件名称 jdk-8u121-linux-x64.tar.gz 1.2 下载地址 http:// ...

  6. Java的各种加密算法

    Java的各种加密算法 JAVA中为我们提供了丰富的加密技术,可以基本的分为单向加密和非对称加密 1.单向加密算法 单向加密算法主要用来验证数据传输的过程中,是否被篡改过. BASE64 严格地说,属 ...

  7. npm 查看全局安装过的包

    查看全局安装的包 npm list -g --depth 0 非全局安装的包 npm list --depth 0 如果不加参数 --depth 0会显示安装的包以及相关的依赖包,会显示的很详细.

  8. JAVA第十周《网络编程》学习内容总结

    JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...

  9. C#学习笔记(十三):继承

    继承 object是引用类型 public:最高权限,公开的 Protected:外部不可以访问 Internal:类的默认访问是什么作用域 Private:类成员默认   基类实例:可以通过base ...

  10. 1、Python快速入门(0529)

    学习来自马哥教育的视频,感谢马哥 编程语言: 用户: 问题空间 计算机:解决问题 解空间 抽象: 机器代码-->微码编程-->高级语言 (语言的高下级的是根据语言是否被人类容易理解或者更接 ...