**计算碳排放减少量**
2026 华为OD机试真题 7月8日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
某能源集团管理 N 个区域(编号 0\~N−1),每个区域有绿色能源减排量和化石能源碳排放量(单位均为吨)。区域间通过 M 条输电线路连接,相连区域属于同一碳交易区。在同一碳交易区内,绿色减排量可跨区域抵消碳排放区,区内总减排量 = max(0,绿色减排量总量−化石能源碳排放量总量)× 区内区域数。请输出所有碳交易区中减排量的最大值。若无有效碳交易区(区域数 <2 或 M=0),输出 −1。
2026 华为OD机试真题 7月8日华为OD上机新系统考试真题 100 分题型
输入描述
整数数组 green,长度为 N,表示编号 0\~N−1 的区域绿色能源减排量(吨);
整数数组 carbon,长度为 N,表示编号 0\~N−1 的区域化石能源碳排放量(吨);
二维整数数组 edges,每行 2 个整数,表示该线路连接的两个区域编号,共 M 行。
约束:
- 1≤N≤100
- 0≤M≤N×(N−1)/2
- 0≤green[i]≤10000
- 0≤carbon[i]≤10000
- 0≤edges[i][0],edges[i][1]≤N−1
- edges[i][0]\=edges[i][1],无重复边
输出描述
整数,表示所有碳交易区中减排量的最大值。若无有效碳交易区,输出 −1。
示例1
输入
[5,8,3,10],[4,2,6,9],[[0,1],[2,3]]
输出
14
说明
4 个区域,green = [5,8,3,10],carbon = [4,2,6,9]
边 (0,1) 将区域 0,1 连为碳交易区 A:
- 绿色减排总量 =5+8=13
- 碳排放总量 =4+2=6
- 减排量 =(13−6)×2=14
边 (2,3) 将区域 2,3 连为碳交易区 B:
- 绿色减排总量 =3+10=13
- 碳排放总量 =6+9=15
- 减排量 =max(0,13−15)×2=0
最大减排量为 14
示例2
输入
[3,5,7],[6,4,2],[[0,1],[1,2]]
输出
9
说明
3 个区域全连通为 1 个碳交易区:
- 绿色减排总量 =3+5+7=15
- 碳排放总量 =6+4+2=12
- 减排量 =(15−12)×3=9
示例3
输入
[2,4,6],[2,4,6],[]
输出
-1
说明
无有效碳交易区
解题思路
核心思想
利用并查集将相连的区域合并为连通分量,然后对每个连通分量计算碳减排量。减排量 = max(0, 绿色减排总量 - 碳排放总量) × 区域数。
算法步骤
- 边界判断:若区域数 < 2 或无输电线路,返回 -1
- 并查集初始化:每个区域为自己的父节点
- 合并连通分量:遍历所有边,合并相连区域
- 聚合数据:遍历所有区域,按根节点聚合绿色减排量、碳排放量和区域计数
- 计算减排量:对区域数 >= 2 的连通分量,计算减排量并取最大值
复杂度分析
- 时间复杂度:O(N + M),主要来自并查集的合并和查找操作
- 空间复杂度:O(N),用于存储并查集和
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/691
文章版权归作者所有,未经允许请勿转载。
THE END