小红维护容量为 K 的缓存。`ADD` 插入位置、分数以及两个四维向量;位置唯一且严格递增。插入后若容量超过 K ,立即淘汰分数最低的记录,分数相同时淘汰位置较小者,并输出淘汰位置。`QUERY` 按位置升序输出所有缓存记录。
第一行输入 K,N 。`ADD pos score` 后紧跟两行各 4 个浮点数;另一种操作为 `QUERY`。所有浮点数都恰有一位小数。 保证 1≤ K,N≤10^5 ,位置在 [0,10^9] 且严格递增,分数在 [0,1000] ;全部查询输出的缓存记录总数不超过 5×10^5 。
触发淘汰时输出 `PRUNED pos`。查询时先输出记录数,再对每条记录输出三行:`pos score`、Key 向量、Value 向量。所有浮点数原样保留一位小数。
3 7 ADD 0 5.0 1.0 2.0 3.0 4.0 0.1 0.2 0.3 0.4 ADD 1 2.0 2.0 2.0 2.0 2.0 0.5 0.5 0.5 0.5 ADD 2 8.0 3.0 3.0 3.0 3.0 0.9 0.9 0.9 0.9 QUERY ADD 3 6.0 4.0 4.0 4.0 4.0 0.0 0.0 0.0 0.0 QUERY ADD 4 9.0 5.0 5.0 5.0 5.0 1.0 1.0 1.0 1.0
3 0 5.0 1.0 2.0 3.0 4.0 0.1 0.2 0.3 0.4 1 2.0 2.0 2.0 2.0 2.0 0.5 0.5 0.5 0.5 2 8.0 3.0 3.0 3.0 3.0 0.9 0.9 0.9 0.9 PRUNED 1 3 0 5.0 1.0 2.0 3.0 4.0 0.1 0.2 0.3 0.4 2 8.0 3.0 3.0 3.0 3.0 0.9 0.9 0.9 0.9 3 6.0 4.0 4.0 4.0 4.0 0.0 0.0 0.0 0.0 PRUNED 0
考点:排序
数据规模 N ≤ 1e5 | 限制 2 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 3 7 / ADD 0 5.0 / 1.0 2.0 3.0 4.0 / 0.1 0.2 0.3 0.4 / ADD 1 2.0 / 2.0 2.0 2.0 2.0 / 0.5 0.5 0.5 0.5 → 输出 3 / 0 5.0 / 1.0 2.0 3.0 4.0 / 0.1 0.2 0.3 0.4 / 1 2.0 / 2.0 2.0 2.0 2.0 / 0.5 0.5 0.5 0.5 / 2 8.0 /
每次超容后按分数与位置的二元组淘汰最小记录。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-07月15号AI岗。