洛谷P2800 又上锁妖塔【DP】【橙】
Date:2021.12.26
题意:每层有个高度,爬楼梯,正常爬每次只能爬一层。但是用魔法可以一次上一层或者两层,上完魔法处于CD,用完后需要爬一层再恢复,问最少累计爬多少高度才能到顶(魔法算飞不算爬)。
输入格式
第一行一个数n (n<=1000000),表示塔的层数。
第二行n个数(<=100),表示从下往上每层的高度。
思路:一看数据1e6,必须dp。
设f[i][0]:跳过第i层后无灵力,且花费体力的最小值。
f[i][1]:跳过第i层后有灵力,且花费体力的最小值。
状态转移:
①f[i][0] = min( f[i-1][1] , f[i-2][1] );
这一状态一定是因为爬第i、i-1层用了灵力,因此对应爬完第i-1、i-2层后一定有灵力。
②f[i][1] = min( f[i-1][0] , f[i-1][1] ) + a[i];
这一状态一定是因为爬第i层没用灵力,因此对应爬完第i-1层后灵力仍存在 或 爬完第i-1层后灵力不存在,但在爬完第i层后灵力恢复了。
注意:初始状态f[0][0]不存在的,因此注意初始化状态。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10,mod=998244353;
int n,m;
string s;
LL f[N][3],a[N];
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];f[0][1]=0;f[1][0]=0;f[1][1]=a[1];for(int i=2;i<=n;i++){f[i][0]=min(f[i-1][1],f[i-2][1]);f[i][1]=min(f[i-1][0],f[i-1][1])+a[i];}cout<<min(f[n][0],f[n][1]);return 0;
}
洛谷P2800 又上锁妖塔【DP】【橙】相关推荐
- 洛谷 P2800 又上锁妖塔
P2800 又上锁妖塔 题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周 ...
- 洛谷P2800 又上锁妖塔
题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进 ...
- 【洛谷P2800又上锁妖塔】动态规划
分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005 ...
- P2800 又上锁妖塔 dp
题目 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A会用仙术,每用一次可以让他向上跳一层或两层,但是每次跳跃后小A都将用完灵力,必须爬过至少一层才能再次跳跃 ...
- 洛谷 P1063 能量项链 区间dp
洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...
- 洛谷3426 [POI2005]SZA-Template 恶臭dp+kmp
前言 做这道题时,我和巨神yxc在洛咕上看到了一篇代码奇短的题解,然后看解析,发现里面的证明都是"显然"."很简单",被臭到. 于是zyd和yxc爆肝了2h左右 ...
- P2800 又上锁妖塔
看,题面被吃掉了! https://www.luogu.org/problemnew/show/P2800 这道题是一道经典的dp,难点在于怎样列状态转移方程. 首先,我们要将原问题 (爬到第N层的最 ...
- 【洛谷】P1388 算式(dp)
题目描述 给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例如: N ...
- 洛谷P2401 不等数列(线性DP)
本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...
最新文章
- WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口
- Share一个整理美化JavaScript代码的在线工具
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- 鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件
- 各种烧写文件格式简介-ELF Hex Bin axf
- 教师计算机网络培训工作总结,教师培训工作的自我总结
- Oracle 表空间与数据文件
- python二级考试程序题批改_随机生成百以内加减乘除题目并批改
- android tools add native support,使用NDK进行开发android
- 哈希值之逆序数与变进制
- kuangbin字典树
- 使用UICollectionView实现首页的滚动效果
- 张一鸣:关于创业的4点感悟
- MySQL的性能分析关键字,explain,及其返回值代表的意思
- php滑动拼图验证,如何在PHP环境下实现滑动拼图验证
- 实验有效的js原生前端 全国三级联动
- 车牌识别EasyPR(3)——SVM模型判断车牌
- 百度paddleOcr安装与使用
- 【面向监狱编程】反编译任何微信小程序,以及独立分包、插件的处理方式
- 天下数据浅谈SNS社交网络本质
热门文章
- 26:第三章:开发通行证服务:9:【注册/登录】接口:验证码校验OK后,先根据手机号去查查该用户是否已存在,如果用户不存在就创建这个用户;(tkmybatis查询构建查询条件,雪花算法,枚举类等等)
- DHT技术,IPFS,BT是个啥
- 键盘上每个键的作用!!!!!!!
- MapReduce-FileInputFormat
- 2012 android开发工具,2012最新完整版Android开发入门教程
- C++11 智能指针时要避开的 10 大错误
- 2022-2028全球与中国宠物雨衣市场现状及未来发展趋势
- PHASOUND发布超旗舰铂金系列,高端酒吧音响设备还需要买进口品牌吗
- 写在2020除夕,回忆初探霓虹
- Python实现2048小游戏(直接拿走运行)