**预测新能源发电量**
2026 华为OD机试真题 6月22日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
某地面光伏电站按区域划分为多个子阵。每个子阵的发电能力有明确的约束:
- 发电能力上限(max_capacity)
- 发电能力下限(min_capacity)
- 基准发电量(base_generation)
系统需要根据这些约束,预测整个电站的发电量。预测策略是:
- 每个子阵有一个基准发电量
- 如果总预测发电量超过电站总容量,需要按比例缩减
- 如果总预测发电量低于总容量下限,需要按比例放大
- 最终预测发电量向上取整为整数
2026 华为OD机试真题 6月22日华为OD上机新系统考试真题 100 分题型
调整策略
缩减场景
当总发电量超过电站容量时,按各子阵的可用缩减空间比例分配缩减量
可用缩减空间 = base_generation − min_capacity;表示该子阵还能减少多少发电量而不低于下限
缩减量按此比例分配:缩减量i = 总缩减量 × (可用缩减空间i / 总可用缩减空间)
放大场景
当总发电量低于总下限时,按各子阵的可用放大空间比例分配增加量
可用放大空间 = max_capacity - base_generation;表示该子阵还能增加多少发电量而不超过上限
增加量按此比例分配:增加量i = 总增加量 × (可用放大空间i / 总可用放大空间)
输入描述
sub_arrays: 子阵列表,每个子阵是一个三元组[max_capacity, min_capacity, base_generation],均为整数
station_capacity: 电站总容量上限(整数)
输出描述
返回一维数组,每个元素是对应子阵的预测发电量(向上整数) 如果无法在约束范围内满足总容量要求,返回全 0 数组
特殊情况处理
- 如果所有子阵都达到下限,但仍超过电站容量:返回全 0 数组
- 如果所有子阵都达到上限,但仍低于总下限:返回全 0 数组
要求
最终预测发电量必须满足:min_capacity≤predicted_generation≤max_capacity
- 如果总预测发电量 > station_capacity,需要按比例缩减
- 如果总预测发电量 < 总下限(各子阵min_capacity之和),需要按比例放大
- 最终结果必须向上取整为整数(如使用math.ceil)
示例1
输入
[[1000, 800, 900],[1200, 900, 1100],[800, 600, 700]],2800
输出
[900,1100,700]
说明
示例2
输入
[[1000, 800, 800],[1200, 900, 900],[800, 600, 600]],2600
输出
[800,900,600]
说明
解题思路
核心思想
本题的核心是根据各子阵的发电能力约束(上限、下限、基准值),按比例调整预测发电量以满足电站总容量要求。
1. 情况判断
- 无需调整:总基准发电量在 [总下限, 电站容量] 范围内
- 需要缩减:总基准 > 电站容量,按可缩减空间比例分配缩减量
- 需要放大:总基准 < 总下限,按可放大空间比例分配增加量
2. 缩减策略
当总发电量超过电站容量时:
- 计算每个子阵的可缩减空间 = 基准值 - 下限
- 计算总缩减量 = 总基准 - 电站容量
- 每个子阵的缩减量 = 总缩减量 × (该子阵可缩减空间 / 总可缩减空间)
3. 放大策略
当总发电量低于总下限时:
- 计算每个子阵的可放大空间 = 上限 - 基准值
- 计算总增加量 = 总下限 - 总基准
- 每个子阵的增加量 = 总增加量 × (该子阵可放大空间 / 总可放大空间)
4. 特殊情况
- 如果所有子阵都达到下限但仍超过容量 → 返回全0
- 如果所有子阵都达到上限但仍低于下限 → 返回全0
- 最终结果向上取整
复杂度分析
- 时间复杂度:O(n),只需遍历子阵数组一次
- 空间复杂度:O(n),用于存储中间计