描述

沿着卡利姆多北方边界延展的破碎的海岸,在世界大分裂之前曾经是暗夜精灵首都艾萨琳的一部分,艾萨拉。恶魔从这个世界被消除,这片土地被撕碎并被大海吞没,剩下的只有曾经雄伟城市的废墟。自那以后,这个岩石交错的岛屿、峭壁悬崖和珊瑚丛生的海洋成为许多传说来源。暗夜精灵们认为这是个被诅咒的地方,连经验最丰富的船长都从这里绕行。这里有巨大的水生物,可怕的暗礁,强大的激流与巨浪。然而传闻这里水下有着惊人的宝藏,吸引了一支矮人探险队前来。矮人们经过多日的探险,终于发现了在一个水域下面有着未知的宝藏。但是这个海域常常有着激流与巨浪,矮人们不可能把探险艇停下来甚至逆流而上。
这个海域可以被描述为一个W×L的矩形,分成个一个个单元格。每个单元格代表的海域下面可能是宝藏,也可能是一块可怕地礁石。从激流的上游开始,每过1秒探险艇就会被冲往下游的一个单位。在被冲往下游的过程中,矮人们可以控制方向,选择他的正前,左前边,或右前边的一个单位。矮人们决定从这个激流的最上游的任意一个单元格开始向下漂流,每经过一个单元格就可以取走这个单元格上的宝藏。但是千万不能碰到礁石,否则他的探险艇会支離破碎。请你安排一个计划,算出探险队最多一共能拿到多少宝藏。

输入格式

第1行,两个整数W,L。
接下来的L行,每行W个整数,以“从上游到下游,面朝水流方向从左向右”的顺序依次为每个单元格中的宝藏的数目,如果为-1则表示这个单元格是礁石。

输出格式

一个整数,表示得到的宝藏。

测试样例1

输入

3 5
5 1 3
-1 7 -1
5 1 10
4 -1 7
20 10 5

输出

41

备注

上游->下游1 2 3 4 5
1   5 -1 5 4 20
2   1 7 1 -1 10
3   3 -1 10 7 5

如上表,探险队从(1,1)开始,第1秒向右转一下,被冲到(2,2)。第2秒向左转一下,被冲到(3,1)。接下来第3秒正前行走,经过(4,1),(5,1),一共拿到5+7+5+4+20=41个单位的宝藏。
数据规模
1<=W<=1000
1<=L<=8000
所有涉及到的数字不会超过32位带符号整型的范围

根据题意,可以轻易想到用搜索或者动态规划来解决。考虑到数据规模,搜索应该使用记忆化搜索。这里介绍逆推动态规划算法。

考虑是从第一行任意位置出发,所以最终状态是max(f[1][1..w])。

由于只能向前、左前、右前移动,所以每一个点的状态由其下方、左下方、右下方转移过来,所以动态转移方程为:f[i][j]=max(f[i+1][j],f[i+1][j-1],f[i+1][j+1])+s[i][j],其中需要考虑边缘的状态。由于题目中说有障碍,所以将障碍点赋值为-maxlongint即可。

边缘直接赋值为0即可。

<span style="font-size:14px;">#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
long n,m;
long s[8003][1004];
long f[8003][1004];inline long max(long a,long b,long c)
{long h;h=(a>b)? a:b;h=(h>c)? h:c;return h;}int main()
{cin>>n>>m;long i,j,k;memset(s,128,sizeof(s));memset(f,-11,sizeof(f));for(i=1;i<=m;i++){for(j=1;j<=n;j++){cin>>s[i][j];if(s[i][j]==-1) s[i][j]=-0x77777777;}}for(i=1;i<=n;i++) f[m][i]=s[m][i];for(i=(m-1);i>=1;i--){for(j=1;j<=n;j++){f[i][j]=max(f[i+1][j],f[i+1][j-1],f[i+1][j+1])+s[i][j];}}j=0;for(i=1;i<=n;i++) j=(j>f[1][i])? j:f[1][i];cout<<j<<endl;return 0;}</span>

转载于:https://www.cnblogs.com/lcyzgdy/p/5877446.html

tyvj p1264 艾泽拉斯的激流相关推荐

  1. 尚硅谷 硅谷外卖_2020年7月最怪异的东西将从硅谷传出

    尚硅谷 硅谷外卖 This month, I'm reeling over Google's announcement that most of their workforce needn't ret ...

  2. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 上 ...

  3. 关于Installshield里一些常见问题的解答—艾泽拉斯之海洋女神出品

    原文:关于Installshield里一些常见问题的解答-艾泽拉斯之海洋女神出品 上一篇:一个完整的安装程序实例-艾泽拉斯之海洋女神出品(五) --补遗 转载时请务必保留转载出处和由艾泽拉斯之海洋女神 ...

  4. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...

  5. |Tyvj|动态规划|P1004 滑雪

    http://tyvj.cn/p/1004 由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索. #include<cstdio> #include<cstring> ...

  6. BZOJ 3224: Tyvj 1728 普通平衡树 treap

    3224: Tyvj 1728 普通平衡树 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  7. BZOJ 3223: Tyvj 1729 文艺平衡树(splay)

    速度居然进前十了...第八... splay, 区间翻转,用一个类似线段树的lazy标记表示是否翻转 ------------------------------------------------- ...

  8. TYVJ 2002 扑克牌 题解

    P2002 扑克牌 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Admin生日那天,Rainbow来找Admin玩扑克牌-- 玩着玩着Rainbow觉得太 ...

  9. 【TYVJ】1359 - 收入计划(二分)

    http://tyvj.cn/Problem_Show.aspx?id=1359 一开始是一眼看出是二分的,因为这里有单调性,因为取钱是一次取完并且是连续的. 所以最优取法就是准备达到某个价值再取.最 ...

最新文章

  1. 第二篇:时间和全局状态(二)
  2. MSSQL数据库安全防范学习笔记
  3. php 获取企业号用户,微信企业号 获取用户信息(示例代码)
  4. 英特尔核芯显卡控制面板没有了_【有趣】第41期:被英特尔取消发售的CPU长啥样?...
  5. Python语言学习之字母G开头函数使用集锦:global用法之详细攻略
  6. 电池pack结构_PACK仿真电池分析新能源汽车整车碰撞
  7. python基础之文件操作,集合,函数
  8. linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解
  9. 「管理数学基础」1.2 矩阵理论:线性映射、线性变换T的矩阵表示
  10. xd使用技巧_Adobe XD —你不知道的30条提示和技巧!
  11. mysql Can't locate Data/Dumper.pm in @INC
  12. 考研807程序设计C语言教程,中央财经大学
  13. Java DateUtil 时间工具类
  14. vscode@局部替换文本/正则匹配分组替换(复杂删除修改替换)/目录检索_模糊匹配工作空间的目录
  15. Excel数据分析常用函数②——统计函数(sumproduct,sumif,sumifs,count,countif,countifs,counta…)
  16. uniapp 中 通过经纬度获取地址详情(vue)
  17. Matlab之读取shp文件函数shaperead
  18. 3.2 向量的线性关系、线性相关线性无关
  19. 如何进行120hz的屏幕录像 OBS
  20. 【话费充值平台】话费充值平台接口设计

热门文章

  1. linux下中文的wchar转char,Linux下 wchar_t 与char 转换
  2. 个人笔记:数据库——数据库设计
  3. FreeNAS-11.2-U7 smb共享和FTP设置
  4. html中加上nav标签作用,html:nav标签实际上起了什么作用呢?
  5. Python网络爬虫封锁限制的几种方法
  6. STlink、Jlink驱动一直安装失败的解决办法
  7. 斗鱼Java开发二面被刷,绝对干货
  8. 单例模式(懒汉 饿汉)
  9. 《九州仙剑传》11.26正式上线链游玩家|唯美国风、闯荡仙界
  10. Java 实现简单打字游戏