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

题目描述

某医疗系统要用一次“线性映射 + 线性分类”结构对问卷症状序列做三步计算:前向预测、MSE 损失、一次 SGD 权重更新。设一条问卷包含 L 条症状记录,每条症状是 D 维向量。先用一个 D×D 的权重矩阵把每条症状做线性变换,再用一个 D×K 的权重矩阵得到 K 维分类打分。把所有记录的打分在“症状条目维度”求平均,得到最终的 K 维预测向量(不做 softmax 归一化)。随后与给定的 K 维真实向量做 MSE 损失,并用学习率 η 进行一次 SGD 更新这两个权重矩阵(均无偏置)。

输入输出

输入描述
· 输入第 1 行:L,D,K,η
· 第 2 行:真实向量 y(K 个数)
· 第 3 行:序列矩阵 X(按行展平,共 L×D 个数)
· 第 4 行:映射矩阵 W_mlp(按行展平,共 D×D 个数)
· 第 5 行:分类矩阵 W_cls(按行展平,共 D×K 个数)
计算规则(均为行优先展平与输出,四舍五入保留 2 位小数):
· H = X @ W_mlp(逐行相乘),h_mean = 每行 H 的平均(1×D)
· y_pred = h_mean @ W_cls(1×K)
· MSE = (1/K) * Σ(y_pred[i] − y[i])^2
· 令 g = (2/K) * (y_pred − y)(1×K)
· grad_W_cls = 外积(h_mean, g)(D×K)
· 令 x_mean = 每行 X 的平均(1×D),u = g @ W_cls^T(1×D)
grad_W_mlp = 外积(x_mean, u)(D×D)
· 参数更新:W_mlp -= η * grad_W_mlp,W_cls -= η * grad_W_cls
输出描述
输出共 4 行:
1) y_pred(K 个数)
2) MSE(1 个数)
3) 更新后的 W_mlp(D×D 个数,行优先)
4) 更新后的 W_cls(D×K 个数,行优先)

样例共 1 组

样例 1 · h_mean = [1,2];y_pred = [1,2,2];MSE = 0.17。 g = (2/3)*([0.5,0.5,0]) = [0.33,0.33,0.00];据此求两矩阵梯度并以 η=0.3 更新后得到上述权重。
输入
1,2,3,0.3
0.5,1.5,2.0
1.0,2.0
1.0,0.0,0.0,1.0
1.0,0.0,0.0,0.0,1.0,1.0
输出
1.00,2.00,2.00
0.17
0.90,-0.10,-0.20,0.80
0.90,-0.10,0.00,-0.20,0.80,1.00

算法解析依据充分

考点:模拟

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

题目画像

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

解题思路

推荐方向:模拟

本题切入点

按给定三步走:H = X·W_mlp 后对症状维度取均值 → 与 y 算 MSE → 用梯度对 W_mlp、W_cls 各做一次 SGD 更新,全程无偏置,输出保留两位。

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

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

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

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

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

该范式的通法易错点

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

样例解读

样例 1:输入 1,2,3,0.3 / 0.5,1.5,2.0 / 1.0,2.0 / 1.0,0.0,0.0,1.0 / 1.0,0.0,0.0,0.0,1.0,1.0 → 输出 1.00,2.00,2.00 / 0.17 / 0.90,-0.10,-0.20,0.80 / 0.90,-0.10,0.00,-0.20,0.80,1.00

h_mean = [1,2];y_pred = [1,2,2];MSE = 0.17。

g = (2/3)*([0.5,0.5,0]) = [0.33,0.33,0.00];据此求两矩阵梯度并以 η=0.3 更新后得到上述权重。

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

本题来源:2025年秋招-华为-11月06号留学生AI岗。

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