题目 2250: 蓝桥杯算法提高-秘密行动

news/2025/2/12 17:58:28/

题目

小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。

输入
第一行包含一个整数n,代表楼的高度。
接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。

输出
输出1行,包含一个整数,表示所需的最短时间。

样例输入

5
3
5
1
8
4

样例输出

1

解题思路

本题可以用深度优先的搜索,但是可能会超时,更优的方法是使用动态规划。首先分析可以得到如下表格,表格中记录的数值是到当前层所需的最短时间(数据来自于样例):

层数爬到到第i层(j=0)跳跃到第i层(j=1)
000
130
250
313
491
551
nmin(dp[n-1][0],dp[n-1][1])+a[n]min(dp[n-1][0],dp[n-2][0])

表格的"j=0"列,表示的是从上一次落脚的层,即第(i-1)层,是通过爬的方式到达当前层(第i层)的;"j=1"列,则代表小D是通过跳跃的方式,从上一次落脚的层,即(i-1)或者(i-2)层,到达第i层的。

因此,如果小D要前往第i层,如果选择爬,则上一步可以是跳跃,也可以是爬,那么之前的路线则选择耗时最短的,即总时间有min(dp[i-1][0],dp[i-1][1])+a[n](这里存在为什么向上爬都爬一层的问题,是因为题目要求耗时最短的,那么肯定减少爬的楼层数目);如果选择跳跃,那么上一步必然要是爬,且跳跃高度为1或2层,所以小D当前所处的楼层必然是(i-1)或者(i-2),因此,有min(dp[i-1][0],dp[i-2][0])。将以上描述写为状态转移方程,有:
{ d p [ i ] [ 0 ] = m i n ( d p [ i − 1 ] [ 0 ] , d p [ i − 1 ] [ 1 ] ) + a [ n ] d p [ i ] [ 1 ] = m i n ( d p [ i − 1 ] [ 0 ] , d p [ i − 2 ] [ 0 ] ) \left\{ \begin{aligned} &dp[i][0]= min(dp[i-1][0],dp[i-1][1])+a[n]\\ &dp[i][1]= min(dp[i-1][0],dp[i-2][0])\\ \end{aligned} \right. {dp[i][0]=min(dp[i1][0],dp[i1][1])+a[n]dp[i][1]=min(dp[i1][0],dp[i2][0])
最终答案是min(dp[n][0],dp[n][1])。

代码

#include<stdio.h>int min(int a, int b){return (a>b)?b:a;
}int main()
{int n,i;//n表示楼层数scanf("%d",&n);int a[n+1],dp[n][2];for (i=1;i<=n;i++)scanf("%d",&a[i]);dp[0][0]=0,dp[0][1]=0;dp[1][0]=a[1],dp[1][1]=0;for (i=2;i<=n;i++){dp[i][0] = min(dp[i-1][0],dp[i-1][1])+a[i];dp[i][1] = min(dp[i-1][0],dp[i-2][0]);}if (n>0 && n<=2)printf("1");elseprintf("%d",min(dp[n][0],dp[n][1]));return 0;
}

http://www.ppmy.cn/news/142569.html

相关文章

【DP】poj2250

经典的lcs问题&#xff0c;然而却是得到了很多启发&#xff0c;当时并没有想到如果s[i]ss[j]就可以直接用dp[i-1][j-1]1转移&#xff0c;仔细想了一下&#xff0c;dp[i][j-1]和dp[i-1][j]一定是<dp[i-1][j-1]1的。如果i在之前的状态中被使用过&#xff0c;那么dp[i][j-1]dp[…

【LOJ2250】「ZJOI2017」仙人掌

【题目链接】 点击打开链接 【思路要点】 考虑给定的图为大小为 N 1 N1 N1 的点的菊花图的情况&#xff0c;记方案数为 d p N dp_N dpN​ &#xff0c;考虑最后一个儿子是否连边&#xff0c;则有转移 d p i d p i − 1 ( i − 1 ) d p i − 2 dp_idp_{i-1}(i-1)dp_{i-2} …

2023年的六一儿童节,愿我们永远热泪盈眶,永远保持童心,致我们终将逝去的青春!

六一儿童节&#xff0c;是一个属于孩子们的节日。在这一天&#xff0c;孩子们可以尽情地玩耍、享受快乐。然而&#xff0c;对于我们这些已经长大的人来说&#xff0c;六一儿童节却意味着一种回忆&#xff0c;一种怀念&#xff0c;一种青春的逝去。 小时候&#xff0c;我们总是…

(纪中)2250. NOIP

(File IO): input:noip.in output:noip.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet 题目描述 你知道 N e w O r a n g e I n d u s t r y P a l a t a b l e New Orange Industry Palatable NewOrangeIndustryPalatable公司吗&#xff1f;这是老板 S…

【LeetCode】2250. Count Number of Rectangles Containing Each Point

基本上就是Binary Search 简单二分 因为题目的height只有100种可能&#xff0c;我的naive的想法是统计每个height的width&#xff0c;然后遍历到每个点(x, y)的时候&#xff0c;把height>y的每个width数组都二分查找一遍…… from collections import defaultdict from b…

洛谷P3258BZOJ3631DTOJ2250 [JLOI2014]松鼠的新家

洛谷P3258&&BZOJ3631&&DTOJ2250 [JLOI2014]松鼠的新家 题目题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示 题解 题目 题目描述 松鼠的新家是一棵树&#xff0c;前几天刚刚装修了新家&#xff0c;新家有 n n n个房间&#xff0c;并且有 n − …

系统开发视角下的诊断 ———— 动力系统(P)诊断故障8

文章目录 P22XX 燃油和空气计量和辅助排放控制P23XX 点火系统或失火 P22XX 燃油和空气计量和辅助排放控制 P22XX Fuel and air metering and auxiliary emission controls DTC Number DTC Name Location P2200 NOx Sensor Circuit Bank 1 P2201 NOx Sensor Circuit Range/Perf…

NOIP——jzoj 2250

题目描述 你知道New Orange Industry Palatable公司吗&#xff1f;这是老板Smart为了与苹果公司竞争而新开的一家橘子公司&#xff0c;它的业务是栽培美味的橘子并售卖&#xff0c;公司简称为NOIP。 NOIP公司新推出N1个橘子&#xff0c;每个橘子上都贴有一个标签&#xff0c;其…