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】【橙】相关推荐

  1. 洛谷 P2800 又上锁妖塔

    P2800 又上锁妖塔 题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周 ...

  2. 洛谷P2800 又上锁妖塔

    题目背景 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑> 题目描述 可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进 ...

  3. 【洛谷P2800又上锁妖塔】动态规划

    分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005 ...

  4. P2800 又上锁妖塔 dp

    题目 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A会用仙术,每用一次可以让他向上跳一层或两层,但是每次跳跃后小A都将用完灵力,必须爬过至少一层才能再次跳跃 ...

  5. 洛谷 P1063 能量项链 区间dp

    洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...

  6. 洛谷3426 [POI2005]SZA-Template 恶臭dp+kmp

    前言 做这道题时,我和巨神yxc在洛咕上看到了一篇代码奇短的题解,然后看解析,发现里面的证明都是"显然"."很简单",被臭到. 于是zyd和yxc爆肝了2h左右 ...

  7. P2800 又上锁妖塔

    看,题面被吃掉了! https://www.luogu.org/problemnew/show/P2800 这道题是一道经典的dp,难点在于怎样列状态转移方程. 首先,我们要将原问题 (爬到第N层的最 ...

  8. 【洛谷】P1388 算式(dp)

    题目描述 给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例如: N ...

  9. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

最新文章

  1. WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口
  2. Share一个整理美化JavaScript代码的在线工具
  3. http-关于application/x-www-form-urlencoded等字符编码的解释说明
  4. 鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件
  5. 各种烧写文件格式简介-ELF Hex Bin axf
  6. 教师计算机网络培训工作总结,教师培训工作的自我总结
  7. Oracle 表空间与数据文件
  8. python二级考试程序题批改_随机生成百以内加减乘除题目并批改
  9. android tools add native support,使用NDK进行开发android
  10. 哈希值之逆序数与变进制
  11. kuangbin字典树
  12. 使用UICollectionView实现首页的滚动效果
  13. 张一鸣:关于创业的4点感悟
  14. MySQL的性能分析关键字,explain,及其返回值代表的意思
  15. php滑动拼图验证,如何在PHP环境下实现滑动拼图验证
  16. 实验有效的js原生前端 全国三级联动
  17. 车牌识别EasyPR(3)——SVM模型判断车牌
  18. 百度paddleOcr安装与使用
  19. 【面向监狱编程】反编译任何微信小程序,以及独立分包、插件的处理方式
  20. 天下数据浅谈SNS社交网络本质

热门文章

  1. 26:第三章:开发通行证服务:9:【注册/登录】接口:验证码校验OK后,先根据手机号去查查该用户是否已存在,如果用户不存在就创建这个用户;(tkmybatis查询构建查询条件,雪花算法,枚举类等等)
  2. DHT技术,IPFS,BT是个啥
  3. 键盘上每个键的作用!!!!!!!
  4. MapReduce-FileInputFormat
  5. 2012 android开发工具,2012最新完整版Android开发入门教程
  6. C++11 智能指针时要避开的 10 大错误
  7. 2022-2028全球与中国宠物雨衣市场现状及未来发展趋势
  8. PHASOUND发布超旗舰铂金系列,高端酒吧音响设备还需要买进口品牌吗
  9. 写在2020除夕,回忆初探霓虹
  10. Python实现2048小游戏(直接拿走运行)