通过率 0% · 提交 0 · 通过 0
实现多头掩码注意力:Q、K、V 各为 n×d,按列分成 h 段(每段 hd=d/h 维)。可见性掩码 mask 为 n×n 的 0/1 矩阵,mask[i][j]=1 表示位置 i 可以看到位置 j,0 表示屏蔽;第 i 行的掩码作用于第 i 个查询,所有头共用同一份掩码。每个头对可见的 j 打分 s=(Q^g_i·K^g_j)/√hd,做数值稳定的 softmax(归一化指数函数)后对 V^g 加权求和;整行被屏蔽时该行输出全 0;h 个头的结果按原顺序拼接回 d 维。
这类题属于算法机考高频题型中「注意力 / 多头」方向的高频题型,通常考察对「注意力 / 多头」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
第一行三个整数 n d h(h 整除 d)。随后 n 行为 Q、n 行为 K、n 行为 V(每行 d 个实数,最多两位小数);最后 n 行、每行 n 个 0 或 1,为掩码 mask。
n 行、每行 d 个数(四舍五入保留两位小数,单个空格分隔);-0.00 输出 0.00。舍入规则:用语言的标准两位小数格式化(f"{x:.2f}"、printf("%.2f")、String.format("%.2f"))即可;测试数据保证每个待输出值的精确值到 0.005 舍入边界的距离不小于 1e-8,三种语言结果一致,无需自行实现舍入。
示例 1
输入示例
2 4 2 1.00 0.00 0.50 0.50 0.00 1.00 0.50 0.50 1.00 0.00 1.00 0.00 0.00 1.00 0.00 1.00 2.00 0.00 0.00 4.00 0.00 2.00 4.00 0.00 1 1 0 1
输出示例
1.34 0.66 2.00 2.00 0.00 2.00 4.00 0.00
两个头;索引为 1 的第二行只可见 j=1
时间限制 4000 ms · 内存限制 256 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。