背景

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

描述

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

输入格式

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

输出格式

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

测试样例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. Ubuntu配置Ruby和Rails

    安装curl sudo apt-get install curl 安装RVM curl -L https://get.rvm.io | bash -s stable 通过RVM来安装Ruby rvm ...

  2. [Django]下拉表单与模型查询

    前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ...

  3. matlab里的svmtrain的输出model里,各参数的含义

    Parameters: [5x1 double]  %结构体变量,依次保存的是 -s -t -d -g -r等参数      nr_class: 4    %分类的个数          totalS ...

  4. 【2016-10-21】【坚持学习】【Day11】【.net 自带的三种委托】

    三种自带委托: Action Predicate Func Action: 无返回类型 Predicate 返回类型是bool类型 Func 自定义返回类型 Action:没有参数没有返回值 Acti ...

  5. Java程序设计之裴波拉切那数列(兔子一年的数量)

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5 ...

  6. Ubuntu14.0下安装Zend Framework 2

    Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...

  7. centos 7 安装音乐播放器(亲测可用)(转载)

    http://www.cnblogs.com/boyiliushui/p/4530625.html

  8. alexkn android第一行代码-7.广播

    0.Android 中的广播主要可以分为两种类型,标准广播和有序广播.标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的 广播接收器几乎都会在同一时刻接收到 ...

  9. Python-11-RabbitMQ、Redis使用

    RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  10. Python 字符串

    Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...