嘻嘻,这是一道典型的DP题目,但貌似网上都没有类似的题解,那兔子就来说一说吧!

黑熊过河

描述
有一只黑熊想过河,但河很宽,黑熊不会游泳,只能借助河面上的石墩跳过去,他可以一次跳一墩,也可以一次跳两墩,但是每起跳一次都会耗费一定的能量,黑熊最终可能因能量不够而掉入水中,所幸的事,有些石墩上放了一些食物,这些食物可以给黑熊增加一定的能量,问黑熊能否利用这些石墩安全的抵达对岸,若能,则计算出抵达对岸后剩余能量的最大值是多少?
输入
第一行包含两个整数P(黑熊的初始能量),Q(黑熊每次起跳时耗费的能量),(0≤P,Q≤1000);
第二行只有一个整数N(1≤N≤10^6),即河中石墩的数目;
第三行有N个整数,即每个石墩上食物的能量值ai(0≤ai≤1000)。
输出
输出文件包括一行,若黑熊能抵达对岸,输出抵达对岸后剩余能量的最大值是多少,若不能抵达对岸,则输出“NO”。
输入样例 1
12 5
5
0 5 2 0 7
输出样例 1
6

思路

入手点:
反正就是老一套的动态转移公式和老生常谈的边界问题。
动态转移公式:
我们可以从题目中得到,黑熊可以从a[i-1]与a[i-2]两个方向来,而a[i-1]和a[i-2]又可以从它们的-1或-2个获得。(如图)

so,所以你想到什么没有?
dp[i]=max(dp[i-1],dp[i-2])-q+a[i];
就是它!

嘻嘻吗,皮了一波,转移到正题上面

基本框架:

#include<bits/stdc++.h>
using namespace std;
建立 需要的数据结构;
int main(){cin部分;for(i:所在河岸下标-对应河岸下标){if(要求上次或上上次>0){变DP[i]的值}if(dp[i]没有体力值了){dp[i]=极小值}}if(不能到对岸){cout<<"NO";return 0;}cout<<dp[n+1];return 0;
}

AC代码

#include<bits/stdc++.h>
using namespace std;
int p,q,n,a[1000100],dp[1000010];int main(){cin>>p>>q>>n;for(int i=1;i<=n;i++){cin>>a[i];}//cin没什么好讲的dp[0]=p;//下标0是所在河岸,n+1是对岸dp[1]=p-q>=0 ? p-q+a[1] : -0x7f7f7f7f ;//我们对dp[0]、dp[1]预处理for(int i=2;i<=n+1;i++){//0,1下标已经处理,所以从2开始bool flag=0;//判断是否dp[i]的获得点为熊跳不过,若没有改变初值则两点都跳不到dp[i]if(dp[i-1]-q>=0){//从dp[i-1]到达flag=1;dp[i] =max(dp[i], dp[i-1]-q+a[i]);}if(dp[i-2]-q>=0){//从dp[i-2]到达flag=1;dp[i]=max(dp[i], dp[i-2]-q+a[i]);}if(!flag){//跳不到dp[i]dp[i]=-0x7f7f7f7f;}}if(dp[n+1]<0){cout<<"NO";return 0;}cout<<dp[n+1];return 0;
}

本期题解就到这里,希望小伙伴们点个关注,下期我们再会,233333333~拜啦!!

YCOJ黑熊过河(C++)相关推荐

  1. 【动态规划】入门练习题浅总

    题目 1.入门 (1) 摘花生 (2)黑熊过河 2.要素与动机 (1)[USACO06JAN]Dollar Dayz S (2)[递推练习]石头剪刀布 3.资源分配类 (1)两颗苹果树 (2)马棚 4 ...

  2. 动态规划(dp)总结

    问题 T: [动态规划]质数和分解 题目描述 任何大于1的自然数n,都可以写成若干个大于等于2且小于等于n的质数之和的形式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如9 ...

  3. 【逻辑题】人与熊过河

    人熊过河问题: 三个人带三只熊过河. 其中一只受训黑熊会划船,其余两只棕熊不会. 只有一只船且只能载两人或两熊或一人一熊. 当哪一岸边熊的数量超过人,熊就会吃人. 请问如何全部安全过河? 答案:人棕过 ...

  4. 袋鼠过河(动态规划)

    题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为 ...

  5. 人工智能--野人过河

    课程简介 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学.人工智能的定义可以分为两 ...

  6. 象过河怎么用远程服务器,象过河远程协助的教程

    完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题.网站新增了"软件百科"."锦囊妙技&q ...

  7. noip2005 过河

    https://www.luogu.org/problemnew/show/P1052 当s!=t时,可以把相邻两石子>t的距离删掉,不影响答案 设两石子距离为 k*t+b,b∈[0,t-1] ...

  8. 过河问题 还是不会 去学请教一下 数学老师 -----

    问题 B: 过河问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 10  解决: 1 [提交][状态][讨论版] 题目描述 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独 ...

  9. 【dp】【路径压缩】P1052 过河

    (大佬们太强了)每次可以跳1-10步,由于lcm(1....10)=2520,那么一定可以往前跳2520的距离,这段距离可以看作没有,所以把距离差膜2520,压缩空间. 题目描述 在河上有一座独木桥, ...

  10. codevs 1105 过河

    1105 过河 2005年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description ...

最新文章

  1. Android--相机预览及拍照临时文件/SurfaceView
  2. windows nginx站点分割日志_Nginx 基础用途拾遗
  3. 写CSDN插入图片一直无法显示?
  4. SpringCloud学习成长之路 五 路由器网关
  5. Java Byte类的compareTo()方法和示例
  6. linux下添加用户的命令--useradd
  7. TCP/IP校验和(浅析+实例)
  8. CAD2010 64 位 安装后打开就卡死 解决方案
  9. 工业机器人(10)-Matlab Robot Toolbox机械臂工作空间
  10. 移动通信技术的未来发展趋势分析
  11. SpCL阅读笔记:Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID
  12. pwc普华永道 信息技术(上海)面试
  13. 在word文档中,解决求和符号的上下标变成右标.
  14. windows上查看u盘ext4分区数据
  15. python:韩信点兵
  16. altera soceds 工具编译preloader与uboot过程分析
  17. PyQt5中的QtDesinger界面各类属性
  18. nodejs+vue基于协同过滤的旅游推荐系统vscode
  19. python中finally是什么意思_Python中关于try...finally的一些疑问
  20. 什么是求实型人格?求实型人格的职业发展

热门文章

  1. 晨光计算机里的铃声是什么歌曲,soul app里的音乐有哪些?soul app里的铃声有哪些?[图]...
  2. 如何将自己的网站发布在互联网上?(仅针对小白,大佬忽略)
  3. 利用tp5中的图像处理功能完成海报的图片合成
  4. 第三章均数估计与假设检验例题及软件实现(SAS/R/STATA/SPSS)
  5. 小众软件android,七款优秀的小众软件,每款都是装逼神器!
  6. python 解析excel模板_python 解析Excel
  7. mysql desc select_数据库里 desc 和 select 怎么用,代表什么意思?
  8. Python3-正则表达式~爬取猫眼电影应用
  9. HDU 4939 DP
  10. CTF靶机 Lian_Yu 笔记