华为 · 模拟 · 算法编程题
华为 模拟 时限 2 秒 / 256 MB

题目描述

小红正在给一套智能运维平台做故障诊断模块。平台会持续收到交换机和路由器上报的多项运行指标,例如 CPU 使用率、内存占用、丢包率和温度等。
为了让规则学习过程更统一,小红会先把每个连续值指标转成二值告警信号:如果该指标值小于对应阈值,则记为 0;如果该指标值大于等于对应阈值,则记为 1。
在完成这一步之后,每条训练样本都会变成一个只包含 0/1 特征的告警向量,再配合样本标签(0 表示正常,1 表示故障)用于训练一棵 ID3 决策树。
构建决策树时,设当前样本集合为 D,其信息熵为 H(D) = -sum(p_i * log2(p_i)),其中 p_i 表示第 i 类样本在集合 D 中所占的比例。
对于某个尚未使用过的特征 A,它在当前节点上的信息增益定义为 Gain(D, A) = H(D) - sum((|D_v| / |D|) * H(D_v)),其中 D_v 表示特征 A 取值为 v 的样本子集。
决策树的构建规则如下:先把所有训练样本按给定阈值离散化成 0/1 特征;如果当前节点样本标签已经完全相同,则该节点直接成为叶子;否则,从当前还未使用的特征中选择信息增益最大的那个作为划分特征;如果有多个特征的信息增益相同,则选择下标更小的特征;对于某个分支,如果继续划分时没有可用特征,或者该分支样本无法再继续有效区分,则该节点输出当前样本集合中的多数类;如果两类数量相同,则输出 0。
预测新样本时,先按同样阈值离散化,再沿决策树向下走到叶子并输出预测类别。
请你输出所有待预测样本的分类结果。

输入输出

输入描述
第一行包含两个整数 N 和 M,分别表示训练样本数量和特征数量,满足 1
第二行包含 M 个浮点数,表示每个特征各自对应的告警阈值。
接下来 N 行,每行包含 M+1 个数。前 M 个为该训练样本的原始特征值,最后一个为标签,标签只会是 0 或 1。
下一行包含一个整数 q,表示待预测样本数量,满足 1
接下来 q 行,每行包含 M 个原始特征值,表示一个需要预测的新样本。
输出描述
输出一行,包含 q 个整数,表示这 q 个待测样本的预测类别,类别之间用空格分隔。

样例共 1 组

样例 1 · 先按阈值把训练样本转成二值特征,例如第一条会变成 0 0 0,第二条会变成 1 0 1。在这组数据里,第三个特征最先把两类样本区分开,因此三个待测样本的预测结果依次为 0、1、1。
输入
6 3
50.0 60.0 70.0
40.0 55.0 65.0 0
55.0 58.0 90.0 1
52.0 80.0 72.0 1
30.0 50.0 60.0 0
75.0 40.0 85.0 1
35.0 75.0 50.0 0
3
45.0 65.0 68.0
70.0 50.0 75.0
60.0 85.0 90.0
输出
0 1 1

算法解析依据充分

考点:模拟

限制 2 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:2 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:模拟

本题切入点

按 ID3 流程建树:先按阈值把特征二值化,递归算各特征的信息增益(熵用 log2),取增益最大者划分(同增益取下标小者),标签一致或无可用特征时用多数类作叶子,再预测 q 个样本。

不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。

思路框架(模拟 通法 · 非本题专属)

  1. 用变量记录题目要求的「状态」(当前值、剩余数量、当前位置等)。
  2. 按题面给出的顺序,把每一步操作写成一段代码,逐条执行。
  3. 每一步执行后更新状态,并在题目要求的位置输出或累计答案。
  4. 注意循环的边界:执行多少次、何时终止、是否能终止。

实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。

复杂度:时间 O(操作次数) | 空间 O(状态数)

该范式的通法易错点

  • 终止条件写错导致死循环或漏做最后一次操作。
  • 状态更新顺序颠倒(先改了下标又用旧下标)。
  • 题目里「最多 / 恰好 / 至少」的语义差别没区分。

样例解读

样例 1:输入 6 3 / 50.0 60.0 70.0 / 40.0 55.0 65.0 0 / 55.0 58.0 90.0 1 / 52.0 80.0 72.0 1 / 30.0 50.0 60.0 0 / 7 → 输出 0 1 1

先按阈值把训练样本转成二值特征,例如第一条会变成 0 0 0,第二条会变成 1 0 1。在这组数据里,第三个特征最先把两类样本区分开,因此三个待测样本的预测结果依次为 0、1、1。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2026年-华为-04月23日留学生AI岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解