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

题目描述

在移动端或边缘设备上,浮点运算成本较高。常见做法是将输入向量和全连接层权重做 INT8 非对称量化(按张量整体 per-tensor),用整数在量化域直接做点积,最后用反量化结果评估与原始浮点结果的误差。
【任务】
·
对输入向量 x 和权重矩阵 W 分别做 INT8 非对称量化(范围 [-128, 127],不加偏置),输出量化域的 m 个整数点积结果。
·
将量化后的 x 与 W 分别反量化为 x_dequant、W_dequant,计算二者在浮点域的全连接输出,与原始 x、W 的浮点输出做均方误差 MSE,并输出 round_half_up(MSE × 100000) 的整数。
·
量化/反量化细节(per-tensor):
·
scale = (max(v) - min(v)) / 255
·
若 max(v) == min(v),则 scale = 0,量化结果全为 -128;反量化直接取 min(v)
·
量化:q = clamp(round((v - min(v)) / scale) - 128, -128, 127),round 为就近取偶
·
反量化:v_dequant = (q + 128) * scale + min(v)
·
MSE 四舍五入采用 half-up(即对 MSE×100000 做 “x+0.5 下取整”)

输入输出

输入描述
· 第一行:n(输入向量维度)
· 第二行:n 个浮点数(输入向量 x)
· 第三行:m n(权重矩阵维度)
· 接着 m 行:每行 n 个浮点数(权重矩阵 W)
输出描述
· 第一行:m 个整数(使用 x_quant 与 W_quant 计算的量化域全连接输出)
· 第二行:1 个整数(round_half_up(MSE × 100000))

样例共 1 组

样例 1 · · 对 x:min=0, max=255, scale=1 → x_quant=[-128, 0, 127] · 对 W(按张量整体):min=0, max=255, scale=1 → 第1行量化为[-128,-128,-128],第2行为[127,127,127] · 量化域点积:· y0 = (-128)(-128) + 0(-128) + 127*(-128) = 128 · y1 = (-128)127 + 0127 + 127*127 = -127 · 反量化后与原始浮点结果一致,MSE=0,输出 0
输入
3
0 128 255
2 3
0 0 0
255 255 255
输出
128 -127
0

算法解析依据充分

考点:模拟

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

题目画像

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

解题思路

推荐方向:模拟

本题切入点

严格按 per-tensor 非对称量化公式实现:由 min/max 求 scale,量化 clip(round((v−min)/scale)−128),反量化 (q+128)·scale+min,再在整数域算点积与 MSE。

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

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

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

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

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

该范式的通法易错点

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

样例解读

样例 1:输入 3 / 0 128 255 / 2 3 / 0 0 0 / 255 255 255 → 输出 128 -127 / 0

· 对 x:min=0, max=255, scale=1 → x_quant=[-128, 0, 127]

· 对 W(按张量整体):min=0, max=255, scale=1 → 第1行量化为[-128,-128,-128],第2行为[127,127,127]

· 量化域点积:· y0 = (-128)(-128) + 0(-128) + 127*(-128) = 128

· y1 = (-128)127 + 0127 + 127*127 = -127

· 反量化后与原始浮点结果一致,MSE=0,输出 0

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

本题来源:2025年秋招-华为-11月12号AI岗。

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