小红有一个非降序整数序列,希望将它划分为至多 K 个非空连续区间。每个区间内的数都用该区间的下中位数代表,误差为区间内各数与代表值之差的绝对值之和。求所有区间的最小总误差。 偶数长度区间的下中位数是区间中两个中间位置里靠左的数。
第一行输入 N,K ,第二行输入 N 个非降序整数。 保证 1≤ N≤5000 , 1≤ K≤min(50,N) ,元素绝对值不超过 10^9 。
输出最小总误差。
3 1 1 2 3
2
5 2 1 2 10 11 12
3
考点:排序
数据规模 N ≤ 5000 | 限制 2 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 3 1 / 1 2 3 → 输出 2
以 2 为代表值,误差为 1+0+1。
样例 2:输入 5 2 / 1 2 10 11 12 → 输出 3
划分为 [1,2] 与 [10,11,12],误差分别为 1 和 2。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月24号AI岗。