华为 · 动态规划 · 算法编程题
华为 动态规划 n ≤ 1e5 时限 1 秒 / 256 MB

题目描述

您是一位穿梭于不同维度的时空漫游者。您的旅程被抽象为一条由 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
输出描述
输出一个整数,代表您从起点到终点能够收集到的最大总能量。

样例共 3 组

样例 1 · 最优路径经过的信标能量依次为 [3, -5, 2, 5, -5] ,累积总能量为 3 + (-5) + 2 + 5 + (-5) = 0 。
输入
2
8
3 -5 -10 2 -1 5 -6 -5
输出
0
样例 2 · 最优路径经过的信标能量依次为 [1, 4, 7] ,累积总能量为 1 + 4 + 7 = 12 。
输入
3
6
1 -5 -2 4 0 7
输出
12
样例 3 · 最优路径经过的信标能量依次为 [1, -2, 4, 5] ,累积总能量为 1 + (-2) + 4 + 5 = 8 。
输入
2
6
1 -3 -2 4 -7 5
输出
8

算法解析依据充分

考点:动态规划

数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 数据规模:n ≤ 1e5,k ≤ 1e5
  • 元素值域:E_i ≤ 1e4(注意整数类型选择,避免溢出)
  • 复杂度门槛:只允许 O(n log n) 及更优,朴素 O(n²) 会超时。
  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:动态规划

本题切入点

线性 DP:dp[i] = E[i] + max(dp[j]),j ∈ [i−k, i−1],用单调队列把滑动窗口最大值维护成 O(1),整体 O(n);n,k≤1e5 决定了不能朴素 O(nk)。

把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。

思路框架(动态规划 通法 · 非本题专属)

  1. 定义状态:dp[i] / dp[i][j] 表示什么(这是最关键的一步,状态定义错就全错)。
  2. 写转移方程:当前状态由哪些更小的状态推来。
  3. 确定初始条件与遍历顺序(保证用到的状态已算好)。
  4. 确定答案取哪个状态;数值大时全程取模。

实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。

复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)

该范式的通法易错点

  • 状态定义不完整(漏了必要维度),导致子问题之间有后效性。
  • 初始化写错(尤其「恰好」与「至多」的初值差别)。
  • 遍历顺序与依赖方向不一致。

对照本题

  • 数据规模 n ≤ 1e5,只允许 O(n log n) 及更优,朴素 O(n²) 会超时。
  • 元素值域最大到 1e4 —— 求和 / 相乘时记得开 64 位整数。

样例解读

样例 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号开发岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解