**智能家居模式调度优化**
2026 华为OD机试真题8月16日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
在一个智能家居系统中,用户可以设置多个“自动化联动”模式。每个模式 modes[i]=[start_time,end_time,power] 描述如下:
- 模式在左闭右开区间
[start_time,end_time)(单位:秒)内处于运行状态 - 为了简化处理,
start_time、end_time已转化为相对于系统启动初始时间点的秒数 - 运行期间,每秒消耗固定功率
power
已知家里电网的最高承受功率 max_power。若同一时刻有多个模式同时运行,则总功率为各模式功率之和。如果总功率大于 max_power,则会导致跳闸。
系统允许永久删除(关闭)任意若干个模式,使剩余模式在任意时刻同时运行时永不跳闸。
请你计算:最少需要删除多少个模式?
2026 华为OD机试真题8月16日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
输入描述
-
max_power:整数代表用户电网能承受的最大总电功率,取值1 <= max_power <= 10^6 -
modes:二维数组,每个子数组modes[i]=[start_time,end_time,power],表示第 i 个智能模式的启动时间、结束时间以及运行它所需要的电功率。start_time,end_time:取值0 <= start_time < end_time <= 10^5power:取值1 <= power <= 10^4- 模式数量取值
1 <= n <= 22
输入为两行:
max_power
modes
输出描述
最少需要删除的模式个数。
示例1
输入
10
[[0,500,5],[400,600,7],[550,700,4]]
输出
1
说明
- 最高承受功率
max_power为10- 模式 0 在时间范围
[0,500)运行,功率5- 模式 1 在时间范围
[400,600)运行,功率7- 模式 2 在时间范围
[550,700)运行,功率4- 在
(400,500)区间内,模式 0 和 1 同时运行,功率 5+7=12>10,发生跳闸- 删除
1个模式即可避免(删除模式 1,保留 0 和 2)
示例2
输入
10
[[0,300,5],[400,600,7],[700,900,3]]
输出
说明
3个模式时间上互不重叠,可同时安全运行
示例3
输入
10
[[0,10,6],[0,10,6]]
输出
1
说明
- 两个模式完全重叠,功率均为
6,同时运行为 12>10,必须删除一个
解题思路
核心思想
模式数量最多只有 22,可以先删掉所有单独就超过 max_power 的模式,再在剩余模式中做搜索。
为了快速判断一个保留集合是否会跳闸,把所有模式的起止时间离散化成若干时间段。对于每个时间段,只要总功率不超过 max_power 就合法。
在搜索中优先尝试保留模式,并用“当前已保留数量 + 剩余模式数量”剪枝,找到最多可保留的模式数,答案就是总模式数减去最多可保留数,再加上必须删除的超限模式数。
算法步骤
- 过滤掉单独功率就大于
max_power的模式,这些模式必须删除。 - 收集剩余模式的所有起止时间并排序去重。
- 将每个模式映射到离散时间段区间。
- 深度优先搜索每个模式“保留/删除”两种选择。
- 保留时检查它覆盖的所有时间段功率是否会超限。
- 用上界剪枝,维护最多可保留模式数。
- 统计最终最少删除数。
复杂度分析
设剩余模式数为 m,离散后时间段数为 t。
- 时间复杂度:
O(2^m * t),在m <= 22下可接受 - 空间复杂度:`O(t +