云服务安全策略最优选择
2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
在云服务中,有 n 个安全策略,编号 1 到 n。每个策略有一个重要度权重(正整数)。某些策略对之间互斥,不能同时启用。
现在需要为某个实例恰好选择 k 个策略,要求:
- 选中的策略之间没有互斥关系(即构成一个独立集);
- 在满足条件1的所有大小为 k 的策略组合中,使得选中策略的权重之和最大(权重之和就是重要度权重数组中的权重的和)。
请返回所有满足上述条件的最优策略组合(即权重和最大的所有合法组合)。
2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型
输入描述
输入为单行,格式为:n,k,[weights],[[conflicts]]
- n:策略总数
- k:需要选择的策略数量
- weights:长度为 n 的整数数组,表示各策略权重
- conflicts:二维整数数组,每个元素为 [a, b],表示策略 a 和 b 互斥(无向,无重复边)
输出描述
- 每个组合内的策略编号按升序排列;
- 所有组合按字典序排列(将每个组合视为一个数字序列);
- 如果没有合法组合(例如不存在大小为 k 的独立集),则返回空数组 []。
注意
- 如果没有大小为 k 的独立集,则返回 []
- 输入格式:单行输入
n,k,[weights],[[conflicts]]
数据规模
- 1≤n≤25
- 0≤k≤n
- 1≤ weights[i] ≤1000
- 0≤ conflicts.length ≤n(n−1)/2
示例1
输入
4,2,[5,1,3,4],[[1,2],[2,3]]
输出
[[1,4]]
说明
组合 [1,4] 权重和为 5+4=9,是最大合法值。
示例2
输入
5,3,[3,4,3,4,3],[[1,3],[2,4],[3,5]]
输出
[[1,2,5],[1,4,5]]
说明
合法组合 [1,2,5] 和 [1,4,5] 权重和均为 10,是最大值。
解题思路
核心思想
最大权重独立集问题,核心思想:
- 位掩码枚举:n≤25,枚举所有可能的 k 元素组合(2^n 枚举)
- 冲突检测:使用位掩码表示冲突关系,高效检测组合是否合法
- 最优选择:遍历所有合法组合,记录最大权重和,收集所有达到最大权重的组合
算法步骤
- 构建冲突掩码数组:
conflict_mask[i]表示与策略 i+1 冲突的所有节点 - 枚举所有大小为 k 的组合(位掩码)
- 对每个组合检查是否为独立集:遍历掩码中的每个选中节点,检查冲突掩码
- 计算合法组合的权重和,记录最大值
- 返回所有权重和等于最大值的组合
复杂度分析
- 时间复杂度:O(2^n * n),n≤25 时可接受
- 空间复杂度:O(n),存
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/672
文章版权归作者所有,未经允许请勿转载。
THE END