**预测新能源发电量**

2026 华为OD机试真题 6月22日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

某地面光伏电站按区域划分为多个子阵。每个子阵的发电能力有明确的约束:

  • 发电能力上限(max_capacity)
  • 发电能力下限(min_capacity)
  • 基准发电量(base_generation)

系统需要根据这些约束,预测整个电站的发电量。预测策略是:

  1. 每个子阵有一个基准发电量
  2. 如果总预测发电量超过电站总容量,需要按比例缩减
  3. 如果总预测发电量低于总容量下限,需要按比例放大
  4. 最终预测发电量向上取整为整数

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 数组

特殊情况处理

  1. 如果所有子阵都达到下限,但仍超过电站容量:返回全 0 数组
  2. 如果所有子阵都达到上限,但仍低于总下限:返回全 0 数组

要求

最终预测发电量必须满足:min_capacity≤predicted_generation≤max_capacity

  1. 如果总预测发电量 > station_capacity,需要按比例缩减
  2. 如果总预测发电量 < 总下限(各子阵min_capacity之和),需要按比例放大
  3. 最终结果必须向上取整为整数(如使用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),用于存储中间计
THE END