小红需要把多组等长传感器信号按频域特征聚类。 对每组长度为 L 的信号计算 DFT,在 k=1 到 L/2-1 中按幅值从大到小选前三个频率下标,幅值相同时选择较小下标,依次组成三维整数特征。 随后对这些特征执行 K-Means。输入给出 K 个原信号下标作为初始中心。每轮将特征分配给欧氏距离最近的中心,距离相同时选择编号较小的中心;新中心为簇内各维均值按银行家舍入取整。空簇保持原中心。中心全部不变或完成 100 轮后停止。 最后把 K 个中心按字典序排序输出。
第一行输入 N,L,K 。接下来 N 行每行 L 个浮点数,最后一行输入 K 个互不相同的初始中心下标。 保证 9 ≤ N ≤ 20 , 8 ≤ L ≤ 50 且 L 为偶数, 2 ≤ K ≤ 4 ,下标在 [0,N-1] 内。
输出 K 行排序后的聚类中心,每行三个整数。
9 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 2 3 1 2 3
考点:排序
数据规模 N ≤ 20 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 9 8 2 / 0 0 0 0 0 0 0 0 / 0 0 0 0 0 0 0 0 / 0 0 0 0 0 0 0 0 / 0 0 0 0 0 0 0 0 / 0 0 0 0 0 0 0 0 / 0 → 输出 1 2 3 / 1 2 3
所有频率幅值相等,按下标选择 1、2、3;两个中心相同且保持不变。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月17号AI岗。