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

题目描述

小红正在为 5G 基站搭建一个轻量级故障预警模型。每条历史数据包含两个特征:设备工作温度 x1、天线负载系数 x2,以及标签 y。y=1 表示发生故障,y=0 表示运行正常。
为了让模型可以部署在边缘设备上,小红使用逻辑回归并通过批量梯度下降从零开始训练。初始时 w1、w2、b 都为 0。
对每个样本,预测概率为:
z = w1*x1 + w2*x2 + b
p = 1/(1+e^(-z))
每一轮迭代使用全部 N 个样本计算平均梯度:
dw1 = average((p-y)*x1)
dw2 = average((p-y)*x2)
db = average(p-y)
然后按学习率 alpha 更新参数:
w1 = w1 - alpha*dw1
w2 = w2 - alpha*dw2
b = b - alpha*db
完成 E 轮迭代后,请输出给定新基站样本发生故障的概率。

输入输出

输入描述
所有数据通过标准输入读取,数值之间由一个或多个空格分隔。
- 第一行:三个数值,分别为训练样本数 N (整数)、迭代次数 E (整数)和学习率 (浮点数)。
- 第 2 到第 N+1 行:每行三个数值,分别为 x_1 , x_2 (浮点数)和标签 y (整数 0 或 1)。
- 最后一行:两个数值,分别为待预测新样本的特征 x_1_new 和 x_2_new (浮点数)。
参数范围约束:
- 1 ≤ N ≤ 1000
- 1 ≤ E ≤ 1000
- 0.001 ≤ ≤ 1.0
- -100.0 ≤ x_1, x_2, x_1_new, x_2_new ≤ 100.0
输出描述
- 输出一行,包含一个浮点数,表示新样本发生故障的预测概率。
- 要求四舍五入保留到小数点后 4 位(例如: 0.5312 )。
## 补充说明

样例共 1 组

样例 1
输入
2 1 0.1
1.0 2.0 1
-1.0 -2.0 0
0.5 1.0
输出
0.5312

算法解析依据充分

考点:模拟

数据规模 N ≤ 1e3 | 限制 2 秒 / 256MB | 标准输入输出

题目画像

  • 数据规模:N ≤ 1e3
  • 元素值域:E ≤ 1e3,x_1 ≤ 100,x_2 ≤ 100(注意整数类型选择,避免溢出)
  • 复杂度门槛:允许 O(n²);若 n ≤ 300,O(n³) 通常也跑得动,需看具体常数。
  • 源站时限:2 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:模拟

本题切入点

逻辑回归从零训练:每轮用全部样本算平均梯度 dw=(p−y)x,再按学习率同步更新 w1,w2,b;E 轮后对新样本算 sigmoid 概率并保留四位小数。

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

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

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

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

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

该范式的通法易错点

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

对照本题

  • 数据规模 N ≤ 1e3,允许 O(n²);若 n ≤ 300,O(n³) 通常也跑得动,需看具体常数。
  • 元素值域最大到 1e3 —— 求和 / 相乘时记得开 64 位整数。

样例

样例 1

  • 输入:2 1 0.1 / 1.0 2.0 1 / -1.0 -2.0 0 / 0.5 1.0
  • 输出:0.5312

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

本题来源:2026年-华为-05月09号AI岗。

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