一个云计算中心接收到了一系列需要连续处理的微任务。现在有 n 个任务排成一队,每个任务都有一个已知的计算成本。为了高效利用服务器资源,系统需要将这 n 个连续的任务划分成 m 个“批次”进行处理。 划分的规则是:必须按照任务队列的顺序进行划分,不能打乱任务原有的先后次序。例如,第一个批次处理前 k_1 个任务,第二个批次处理接下来的 k_2 个任务,以此类推。 为了使服务器负载尽可能平稳,调控目标是:找到一种划分方案,使得这 m 个批次各自的“总计算成本”(即批次内所有任务的成本之和)的标准差达到最小。 你的任务就是找出这个最优的划分方案。
第一行输入两个整数,第一个是任务总数 n ( 2 < n ≤ 20 ),第二个是需要划分的批次数目 m ( 2 < m < n )。 第二行输入一个包含 n 个正整数的序列 C = c_0, c_1, ..., c_n-1 ,其中第 i 个元素 c_i 代表第 i 个任务的计算成本 ( 0 < c_i < 100 )。
输出一行,包含 m 个整数,代表最优划分方案中,每个批次依次包含的任务数量。 例如,输出 `3 3 2 2` 表示:第 1 批包含前 3 个任务,第 2 批包含接下来的 3 个任务,第 3 批包含再接下来的 2 个任务,第 4 批包含最后 2 个任务。
8 4 30 42 85 19 65 13 94 57
2 1 3 2
考点:dfs
数据规模 n ≤ 20 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:dfs
本题切入点
n≤20 极小,划分方案数只有 C(n−1, m−1)(最大约 9 万),直接 DFS 枚举每个切分点、累计各批成本并实时更新标准差最优解即可。
一条路走到底再回溯,适合枚举全部方案与连通性判定。
思路框架(dfs 通法 · 非本题专属)
实现要点:回溯时务必把状态恢复干净;必要时加剪枝(可行性剪枝、最优性剪枝)。
复杂度:时间 O(状态数) | 空间 O(递归深度)
该范式的通法易错点
对照本题
样例 1
8 4 / 30 42 85 19 65 13 94 572 1 3 2解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-8月27号开发岗。