【题目大意】
m个落脚点位于不同位置,超楠要从初始为1的位置跳到n每次只能跳 1∼k1 \sim k1∼k 中的任意值并且要跳到落脚点(或n)题目要求计算最少跳跃次数,如果无法到达则输出 -1。
SUBTASK1: 100%
【算法分析】
本题采用贪心算法
mmm 个落脚点存在数组 1∼n1 \sim n1∼n 中并且同时将起点终点存入数组即数组 000 位置标 111 , m+1m+1m+1 标记 nnn ,判断是否有两点差距大于k,如果大于k说明无法达到终点输出-1;
我们可以用一个标记记录超楠此时所在位置,循环向下扫描直到扫描到 aia_iai 与超楠所在位置距离大于 kkk 时,超楠就需要跳到 ai−1a_{i-1}ai−1 的位置,并记录超楠跳跃次数,注意最后超楠可能并没有跳到 nnn 所以我们要判断跳跃次数加 111 。
时间复杂度 O(n) 。
【参考代码】