问题标题: 酷町堂:4625 机器人爬山

0
0
已解决
周琪岳
周琪岳
资深光能
资深光能

连DP四分题都得上问答,阶段考有点悬\qwq\

4625   机器人爬山
经验值:1200
题目描述 Description
现在有一种型号的爬山机器人,可以通过阶梯爬山。它爬山的方式如下:

如果下一步阶梯的高度只比当前阶梯高 1,则可以直接登上。
除了第一步阶梯外,都可以从当前阶梯退到前一步阶梯。
当机器人连续退下 k 后,可以一次跳上不超过当前阶梯高度 2k的阶梯。比如说机器人现在位于第 j 步阶梯,并且是从第 j+k 步阶梯退下来的,那么机器人可以跳到高度不超过当前阶梯高度h+2k的任何一步阶梯。跳跃这一次只算一次移动。
开始时机器人在第一步阶梯,请你计算出机器人最少的移动步数。

输入描述 Input Description
第一行:一个整数 N,表示阶梯步数。
第二行:N 个整数,依次为每层阶梯的高度,保证递增。

输出描述 Output Description
一个整数,如果能登上阶梯,输出最小步数,否则输出-1。

样例输入 Sample Input
5
0  1  2  3  6 
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
【样例解释】
连续登 3 步,再后退 3 步,然后直接跳上去。
每步阶梯高度不超过1000
台阶数n<=200

O(N)水不过去,O(N^2)不是到怎么写,希望有大佬帮助

@候平仄@张帆@曹灿阳@黄依成@包涵宇@董子墨


0
已采纳
黄依成
黄依成
中级天翼
中级天翼

菜鸡只会O(n^3) qwq

dp边界是f[1]=0

f[i]初始值为0x3f3f3f3f

if(a[i-1]+1>=a[i])   f[i]=f[i-1]+1

第一重循环从2到n,第二重循环从i-1到1,第三重循环从j到1

if(pow(2,j-k)+a[k]>=a[i])  f[i]=min(f[i],f[j]+j-k+1)

最后输出f[n],注意走不到的情况输出-1

就酱

O(n^3)的dp还是能过的

0
0
我要回答