使用动态规划解决即可,即每次使用之前的计算过的状态来求出当前状态的结果,在这道题中就是用所有能到达当前所求的石台的花费来更新当前所求的答案,转移方程为
dpi=minj=i−kj<i(dpi−k+max(0,ai−aj))
初始值 dp1=0
直接将这个方程用代码实现即可,最后 dpn 即为答案
河面上漂浮着一排共 n 个石台,依次编号为 1 到 n,每个石台有一个离水面的高度 hi。你需要从第 1 个石台出发,最终到达第 n 个石台。
你的跳跃能力有限:每次只能向前移动 1 到 k 个石台。若从石台 i 跳到石台 j(i<j≤i+k),消耗的体力为 max(0,hj−hi),即只有当目标石台更高时才会消耗等于高度差的体力,否则体力消耗为 0。
请计算从第一个石台到最后一个石台所需的最小体力总和。
石台数量 n 与最大跳跃跨度 k 满足 1≤k≤n≤4000。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册