背景

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

描述

    这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在。但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助。
    山用一个三角形表示,从山顶依次向下有1段、2段、3段等山路,每一段用一个数字T(1<=T<=100)表示,代表晴天小猪在这一段山路上需要爬的时间,每一次它都可以朝左、右、左上、右上四个方向走(**注意**:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段,且在任意一层的最后一段也可以走到本层的第一段或上一层的第一段)。
    晴天小猪从山的左下角出发,目的地为山顶,即隐者的小屋。

输入格式

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

输出格式

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

测试样例1

输入

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

输出

10

备注

在山的两侧的走法略有特殊,请自己模拟一下,开始我自己都弄错了……Sunnypig
/*
每一次它都可以朝左、右、左上、右上四个方向走 !!!!!!!!!!!!!!!! 每一次它都可以朝左、右、左上、上四个方向走 不是右上是上!!!!!!!!!!!!!!!!
*/ #include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = ;
int n,h[][],dp[][];
int main(){
cin>>n;
for(int i = ;i <= n;i++){
for(int j = ;j <= i;j++){
scanf("%d",&h[i][j]);
}
}
for(int i = ;i <= n + ;i++){
for(int j = ;j <= ;j++){
dp[i][j] = maxn;
}
}
dp[n][] = ;
for(int i = n;i >= ;i--){
for(int j = ;j <= i;j++){
if(j == ) dp[i][j] = min(min(dp[i][j],dp[i+][j] + h[i+][j]),min(dp[i+][i+] + h[i+][i+],dp[i+][j+] + h[i+][j+]));
else if(j == i) dp[i][j] = min(dp[i][j],min(dp[i+][] + h[i+][],min(dp[i+][j+] + h[i+][j+],dp[i+][j] + h[i+][j])));
else dp[i][j] = min(dp[i][j],min(dp[i+][j+] + h[i+][j+],dp[i+][j] + h[i+][j]));
}
dp[i][] = min(dp[i][],dp[i][i] + h[i][i]);
for(int j = ;j <= i;j++) dp[i][j] = min(dp[i][j],dp[i][j-] + h[i][j-]);
dp[i][n] = min(dp[i][n],dp[i][] + h[i][]);
for(int j = n - ;j >= ;j--) dp[i][j] = min(dp[i][j],dp[i][j+] + h[i][j+]);
}
cout<<dp[][] + h[][];
return ;
}

tyvj1106 登山的更多相关文章

  1. 登山(Climb)

    题目: Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi.  小修从西往东登山.每到一座山峰,她就回头观望自己走 ...

  2. [DP题]登山

    描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号.同时队员们还有另一个登山习惯,就是 ...

  3. 【Foreign】登山 [DP][数学]

    登山 Time Limit: 10 Sec  Memory Limit: 256 MB Description 恶梦是一个登山爱好者,今天他来到了黄山 俗话说的好,不走回头路.所以在黄山,你只能往前走 ...

  4. 【NHOI2018】跳伞登山赛

    [题目描述] 某山区有高高低低的 n 个山峰,根据海拔高度的不同,这些山峰由低到高进行了 1 到 n 编号.有 m 条只能单向通行的羊肠小道连接这些山峰.现在,这里要举行一场跳伞登山赛,选手们伞降到某 ...

  5. noi 1996 登山

    题目链接: http://noi.openjudge.cn/ch0206/1996/ LIS,LDS 正着做最长递增子序列,反着做最长递减子序列. http://paste.ubuntu.com/23 ...

  6. HDU 5360 Hiking 登山 (优先队列,排序)

    题意: 有n个人可供邀请去hiking,但是他们很有个性,每个人都有个预期的人数上下限[Li,Ri],只有当前确定会去的人数在这个区间内他才肯去.一旦他答应了,无论人数怎样变更,他都不会反悔.问最多能 ...

  7. java线程例子登山

    Through its implementation, this project will familiarize you with the creation and execution of thr ...

  8. openjudge-NOI 2.6-1996 登山

    题目链接:http://noi.openjudge.cn/ch0206/1996/ 题解: 正反求两次LIS即可 #include<cstdio> #include<cstring& ...

  9. AcWing登山

    这是2006北大举办的ACM的一道题. 题意为:给定景点海拔高度,队员们不去游览相同高度的景点,一开始往上爬,一但往下爬就不能再向上爬,求最多可以游览多少个景点.那么我们可以得到一个结论:以一个最高点 ...

随机推荐

  1. [WPF系列]-Layout

    DockPanel The nice thing about dock panels is they already fill all the available space. LastChildFi ...

  2. 【2016-11-6】【坚持学习】【Day21】【主窗口关闭时,同步关闭它的子窗口】

    本来想用委托实现的.但是又觉得没有必要. 方法如下: public MainWindow() { InitializeComponent(); this.Closing += MainWindow_C ...

  3. 关于C语言的问卷调查

    你对自己的未来有什么规划?做了哪些准备? 答:游戏开发,参与一些游戏的测试,通过自身的游戏体验和其他人的游戏体验来总结什么样的游戏会让人眼前一亮,爱不释手. 你认为什么是学习?学习有什么用?现在学习动 ...

  4. 俄罗斯方块(Java实现)

    程序效果: 代码: //Box.java 1 package tetris; public class Box { private final int M = 30, N = 12; private ...

  5. Java面向对象 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  6. git clone Linux 源码并切换TAG

    想从github上下载一个特定TAG分支来查看代码,按照先git clone后git checkout的方式,提示说有文件没有提交.因为只查看不编译运行,所以这些关系不大的文件采取删除或者重新命名后提 ...

  7. jmeter(四)Sample之http请求

    启动jmeter,建立一个测试计划 这里再次说说怎么安装和启动jmeter吧,昨天下午又被人问到怎样安装和使用,我也是醉了:在我看来,百度能解决百分之八十的问题,特别是基础的问题... 安装:去官网下 ...

  8. C语言:socket简单模拟http请求

    #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netine ...

  9. 以libfuse为例介绍rpm打包工具rpmbuild的使用和SPEC文件的编写

    一.rpmbuild命令的安装 yum install rpm-build 二.用法 rpmbuild -bb XXXX.spec或者rpmbuild -ba XXX.tar.gz 三.目录概述 rp ...

  10. asp.net MVC 通用登录验证模块

    用法: 还是希望读者把源码看懂,即可运用自如.重点是,为什么有个UserType!!! 登录用户信息: namespace MVCCommonAuth { [Serializable] public ...