这道题是一道典型的模拟题,我们只需要按照题目描述的过程一步步模拟即可,注意边界条件的判断。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解题思路
1. 初始化:记录当前体力值,准备一个数组记录每个营地的补给量(初始为0,有补给点的营地更新为对应的恢复值)。
2. 遍历移动:从营地1到营地N,依次执行:
1. 前往下一个营地,消耗对应体力值。
2. 判断移动后的体力是否 ≤ 0,如果是,直接判定无法到达,结束流程。
3. 到达新营地后,加上该营地的补给值。
3. 最终判断:如果成功走完所有营地,输出Yes;否则输出No。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
样例分析
* 样例1
1. 初始体力:10
2. 营地1→2:消耗5,体力变为5(>0),营地2有补给+10,体力变为15
3. 营地2→3:消耗7,体力变为8(>0),无补给
4. 营地3→4:消耗5,体力变为3(>0),成功到达,输出Yes
* 样例2
1. 初始体力:10
2. 营地1→2:消耗10,体力变为0(≤0),无法继续前进,输出No
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C++ 参考代码
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PYTHON 参考代码
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
复杂度分析
* 时间复杂度:O(N+M)O(N + M)O(N+M),仅需遍历一次营地和补给点,符合数据范围要求。
* 空间复杂度:O(N)O(N)O(N),存储营地补给信息。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
💡 关键注意点
* 体力值要用long long(C++)或int(Python天然大整数),防止数值溢出。
* 移动后体力≤0就失败,即使后续有补给也无法继续。
* 补给点是在到达营地后恢复体力,顺序不能搞反。