背景

在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳、勇敢、善良、团结……
不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物。所以晴天小猪自告奋勇,要去采取这种药草。于是,晴天小猪的传奇故事便由此展开……

描述

这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在。但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助。

山用一个三角形表示,从山顶依次向下有1段、2段、3段等山路,每一段用一个数字T(1<=T<=100)表示,代表晴天小猪在这一段山路上需要爬的时间,每一次它都可以朝左、右、左上、右上四个方向走。山是环形的。(注意:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。

晴天小猪从山的左下角出发,目的地为山顶,即隐者的小屋。

格式

输入格式

第一行有一个数n(2<=n<=1000),表示山的高度。

从第二行至第n+1行,第i+1行有i个数,每个数表示晴天小猪在这一段山路上需要爬的时间。

输出格式

一个数,即晴天小猪所需要的最短时间。

样例1

样例输入1[复制]

5
1
2 3
4 5 6
10 1 7 8
1 1 4 5 6

样例输出1[复制]

10

限制

各个测试点1s

提示

在山的两侧的走法略有特殊,请自己模拟一下,开始我自己都弄错了……

忘了考虑同行然后WA了。。

参考题解:

写出一个递推式

: d[i][j]=max (d[i][j-1],d[i][j+1],d[i+1][j],d[i+1][j+1]);

无疑这是一种错误的写法,因为出现了环,对于动态规划有了后效性。

后效性的出现是因为可以同行之间走,但是不会走重复的点是可以肯定的,于是想到后效性是可以消除的。

现在先考虑同行的情况。

假设某一时刻走到了 (i,j) 这一点,在下一步决策的时候,要么是(i,j-1),要么是(i,j+1),先不考虑加减之后越界的情况。而如果选择了(i,j-1)这个点,下一步再决策的时候,势必不会再重复(i,j),而只会考虑(i,j-2)。状态d[i][j]定义为从(n,1)到点(i,j)的最短距离大小,若d[i][j]来自同行某个数,只能来自d[i][j-1]或d[i][j+1]其中一个。

于是有了一个基本的思路:

对于每一行来说先向右递推,再向左递推,递推式为

:d[i][j]=min (d[i][j],d[i-1][j]+a[i][j])

向左推的递推式类似地可以写出。

每行左右递推各一次即可,环的问题根本不需要担心。d[i][j]必来自于左推和右推时更优的一条路,若将d[i][j][0]定义为表示右推的结果,d[i][j][1]表示左推的结果,则d[i][j]的最终值为min(d[i][j][0],d[i][j][1]),这样可能更好理解一点,说明左右互不影响,只是从中选择一个即可。

循环进入上一行之后,开始递推向上走的情况,和数字三角形递推式一样,不过边缘需要单独考虑,不再给出

:d[i][j]=min(d[i+1][j],d[i+1][j+1])+a[i][j]

转载于:https://www.cnblogs.com/htwx/articles/4920620.html

P1006晴天小猪历险记之Hill相关推荐

  1. vijosP1006 晴天小猪历险记之Hill

    vijosP1006 晴天小猪历险记之Hill 链接:https://vijos.org/p/1006 [思路] 图上DP. 这个题的递推顺序是关键.先从上一行得到最小值,然后从本行比较最小值,注意本 ...

  2. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

  3. 晴天小猪历险记之Hill

    题目描述 这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在.但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求 ...

  4. 【vijos】1006 晴天小猪历险记之Hill(dijkstra)

    https://vijos.org/p/1006 连边后跑点权的最短路 注意连边的时候左端点可以连到下一行的右端点,右端点可以连到下一行的左端点 #include <cstdio> #in ...

  5. 18.03.06 vijos1006 晴天小猪历险记之Hill

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  6. voj1006 晴天小猪历险记之Hill

    背景 Background   在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种 ...

  7. 回档|晴天小猪历险记之hill

    背景 Background 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物 ...

  8. Vijos 1006 晴天小猪历险记之Hill 单源单汇最短路

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  9. 晴天小猪历险记之Hill解题报告

    和数字三角形类似,但要更复杂一些. 一开始就仿照数字三角形写了方程:f[i][j]=min{f[i+1][j],f[i+1][j+1],f[i][j-1],f[i][j+1]},后来代码实现的时候发现 ...

最新文章

  1. 2017.6.4 入门组 NO.2——睡眠
  2. CV 方向,长期看好,短期谨慎?
  3. 成功解决matplotlib绘图的时候,自定义横坐标和纵坐标刻度数值(调整坐标轴刻度间隔)
  4. javascript基础入门_javascript基础入门学习第一篇
  5. not in SQL语句转化为 not exists
  6. P1468 派对灯 Party Lamps(BIG 模拟)
  7. C++使用socket实现进程通信
  8. 探索 Rust 异步简化编程
  9. Matlab中的逻辑运算:“any”,“all”
  10. java赋值两个对象数组 clone_Java:类的两个相同对象数组的克隆问题
  11. 二十五、JAVA多线程(二、吃苹果案例)
  12. Fastjson实用工具类,List转JSONString,List转JSONArray,JSONArray转List,JSONArray转ArrayList,JSONObject转HashMap
  13. 饿了么UI框架表单验证
  14. 当今主流软件产品家族及其开发语言
  15. 620集成显卡和mx250_MX250属于什么档次的显卡
  16. 从远景论坛上学到的完美激活NERO8 NERO9的经验
  17. pytorch读取tif文件方法
  18. android 监听 短信,Android短信验证码监听解决onChange多次调用的方法
  19. 记笔记非常好用的一款工具 eDiary
  20. oa 服务器 微信,微信OA:一种新的办公方式

热门文章

  1. Qt小玩意儿——变色魔法阵(QPainter的部分应用)
  2. 基础排序算法之选择排序法
  3. PTA R7-1 判断素数
  4. 虚拟机CentOS忘记密码
  5. python ioctl_ioctl用法详解
  6. 数列极限存在准则:单调有界数列必有极限
  7. 在pycharm中使用Echarts绘制单个省份的地图(以内蒙古自治区为例)
  8. docker启动tomcat
  9. 【Redis 大量点赞问题】
  10. 无约束优化问题之Hooke-Jeeves法(模式搜索法)