【动态规划】【RQ82】又上锁妖塔
题目描述
小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙 剑>,可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进去,于是小D问他:”你在干什么?怎么不上去?”小A说:”我在想怎么从锁妖塔 外面爬上去”(倒…) 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A会用仙术,每用一次可以让他向上跳一层或两层,但是每次跳 跃后小A都将用完灵力,必须爬过至少一层才能再次跳跃(你可以认为小A需要跳两次一层才休息),小A想用最短的时间爬到塔顶,可是他不能找到时间最短的方 案,所以请你帮他找到一个时间最短的方案让他爬到塔顶,小A只关心时间,所以你只要告诉他最短时间是多少就可以了.你可以最后跳到塔外即超过塔高.
[数 据规模]
对20%的数据,n<=10
对40%的数据,n<=100
对60%的数据,n<=5000
对 100%的数据,n<=10000
输入格式
第一行一个数n (n<=10000),表示塔的层数.
接下来的n行每行一个数(<=100),表示从下 往上每层的高度.
输出格式
一个数,表示最短时间
样例输入
5 3 5 1 8 4
样例输出
1
三维状态图像
f[i,1]{tiao} f[i,2]{pia}
f[i,1]:=min(f[i-1,2],f[i-2,2]);
f[i,2]:=min(f[i-1,1],f[i-1,2])+a[i];
const maxn=10000; var a:array[-1..maxn+1] of longint; f:array[-2..maxn+3,1..2] of longint; i,j,k,n:longint; function min(a,b:longint):longint; begin if a>b then exit(b); exit(a); end; begin readln(n); for i:=1 to n do readln(a[i]); for i:=1 to n do begin f[i,1]:=min(f[i-1,2],f[i-2,2]); f[i,2]:=min(f[i-1,1],f[i-1,2])+a[i]; end; k:=maxlongint; writeln(min(f[n,1],f[n,2])); end.
【动态规划】【RQ82】又上锁妖塔相关推荐
- 又上锁妖塔(洛谷:P2800)
又上锁妖塔 题目描述 可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进去,于是小D问他:"你在干什么?怎么不上去?"小A说:"我在想怎么从锁妖塔外面爬上去&qu ...
- 洛谷 P2800 又上锁妖塔
P2800 又上锁妖塔 题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周 ...
- 【洛谷P2800又上锁妖塔】动态规划
分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005 ...
- 洛谷P2800 又上锁妖塔
题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进 ...
- P2800 又上锁妖塔 dp
题目 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A会用仙术,每用一次可以让他向上跳一层或两层,但是每次跳跃后小A都将用完灵力,必须爬过至少一层才能再次跳跃 ...
- 又上锁妖塔_rqnoj82_dp
Description 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑>,可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是 ...
- 洛谷P2800 又上锁妖塔【DP】【橙】
Date:2021.12.26 题意:每层有个高度,爬楼梯,正常爬每次只能爬一层.但是用魔法可以一次上一层或者两层,上完魔法处于CD,用完后需要爬一层再恢复,问最少累计爬多少高度才能到顶(魔法算飞不算 ...
- P2800 又上锁妖塔
看,题面被吃掉了! https://www.luogu.org/problemnew/show/P2800 这道题是一道经典的dp,难点在于怎样列状态转移方程. 首先,我们要将原问题 (爬到第N层的最 ...
- rnqoj-82-又上锁妖塔-dp
又是一个敢想就敢做的题目... 同时记录更新两个状态 dp[i] :第i层是飞上去的 df[i] :第i层是走上去的 dp[i]=min(df[i-1],df[i-2]); df[i]=min(dp ...
最新文章
- 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
- 《Datawhale年度学习总结报告》发布!
- Haha!Sniffer Pro终于可以用啦~
- R学习笔记:运行时间记录
- 三相同步电机怎么接线图_智能电表怎么接线 单相 三相电表接线图大全
- 聊聊近期的感受和10月文章精选!
- STM32----ADC多通道采集
- Bootstrap CSS编码规范之代码组织规范
- Docker学习总结(37)——Dockerfile编写的八条准则
- linux的abrt目录满了,linux:abrt-cli list
- pve万兆网卡驱动_无线环境下打游戏,还能不能更稳?附各类AX网卡换装思路
- ESAPI集成官方参考文档
- JAVA 三个框架结合运用思路_SSM框架的整合与使用——实现简单的转账系统
- Python每日一记129列表换行
- sqlite库学习(7)sqlite读取
- JavaScript操作canvas制作前端H5小游戏——Flappy Bird
- 34-高级路由:BGP汇总:实验五 route-map+suppress-map过滤、as-set
- 域名解析地址如何查看?为什么要做域名解析?
- C语言初阶数据结构(四)栈(详细图解,简单上手,通俗易懂)
- 程序员生存状态调查报告