您是一位穿梭于不同维度的时空漫游者。您的旅程被抽象为一条由 n 个能量信标组成的线性路径,路径的起点为信标 0 ,终点为信标 n-1 。 每个信标 i 都蕴含着一定的时空能量,其能量值由一个整数数组 E 中的 E_i 表示。正能量值可以为您的时空引擎充能,而负能量值则会消耗您的能量储备。 您的跳跃能力受到限制。当您位于信标 i 时,您的下一步可以跳跃到 [i+1, min(n-1, i+k)] 范围内的任意一个信标。其中, k 是您单次跳跃的最大距离。 您的任务是规划一条从信标 0 到信标 n-1 的路径,使得您在这段旅程中收集到的总能量最大化。
- 输入的第一行是一个正整数 k ,代表您的最大跳跃距离。 - 输入的第二行是一个正整数 n ,代表能量信标的总数。 - 输入的第三行是 n 个整数,共同构成了能量数组 E = [E_0, E_1, ..., E_n-1] ,每个整数代表对应信标的能量值,以空格分隔。 1 ≤ n, k ≤ 10^5 -10^4 ≤ E_i ≤ 10^4
输出一个整数,代表您从起点到终点能够收集到的最大总能量。
2 8 3 -5 -10 2 -1 5 -6 -5
0
3 6 1 -5 -2 4 0 7
12
2 6 1 -3 -2 4 -7 5
8
考点:动态规划
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:动态规划
本题切入点
线性 DP:dp[i] = E[i] + max(dp[j]),j ∈ [i−k, i−1],用单调队列把滑动窗口最大值维护成 O(1),整体 O(n);n,k≤1e5 决定了不能朴素 O(nk)。
把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。
思路框架(动态规划 通法 · 非本题专属)
实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。
复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1:输入 2 / 8 / 3 -5 -10 2 -1 5 -6 -5 → 输出 0
最优路径经过的信标能量依次为 [3, -5, 2, 5, -5] ,累积总能量为 3 + (-5) + 2 + 5 + (-5) = 0 。
样例 2:输入 3 / 6 / 1 -5 -2 4 0 7 → 输出 12
最优路径经过的信标能量依次为 [1, 4, 7] ,累积总能量为 1 + 4 + 7 = 12 。
样例 3:输入 2 / 6 / 1 -3 -2 4 -7 5 → 输出 8
最优路径经过的信标能量依次为 [1, -2, 4, 5] ,累积总能量为 1 + (-2) + 4 + 5 = 8 。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-9月17号开发岗。