#P0184. [经开区2025] 智能工厂(work)
[经开区2025] 智能工厂(work)
【背景】
义卖所得资金全部捐给智能工厂。工厂接到一笔订单:连续完成 m 个生产任务,任务顺序固定,不能并行、不能拆分,但可以连续分段。现要将这些任务分配给 k 名工人进行生产。每名工人的生产效率相同,一项生产任务不允许分配给两名(或以上)工人同时生产,且分配给每名工人的任务必须是连续的,例如不能把第 1 项、第 3 项、第 4 项任务分配给同一名工人生产。
【任务】
现在请你设计一种任务分配方案,使得完成所有生产任务的总时间最短。这里的总生产时间以生产任务量最多的工人所花费的时间来衡量(假设单位任务量花费单位时间)。
【输入格式】
从文件 work.in 中读取数据。 第一行两个整数 m, k,分别表示生产任务的总项数和参与生产的工人数量。
第二行 m 个整数,第 i 个整数表示第 i 项生产任务所需的任务量(即完成该任务需要花费的时间)。
【输出格式】
输出到 work.out 中。 输出一个整数,代表完成所有生产任务的最短总时间。
【输入输出样例】
样例输入 1
9 3
1 2 3 4 5 6 7 8 9
样例输出 1
17
样例解释:
将 9 项生产任务按以下方式分配给 3 名工人,可使总生产时间最短:
第 1 名工人负责第 1–5 项任务,总任务量为 1+2+3+4+5=15,花费时间 15;
第 2 名工人负责第 6–7 项任务,总任务量为 6+7=13,花费时间 13;
第 3 名工人负责第 8–9 项任务,总任务量为 8+9=17,花费时间 17;
此时生产任务量最多的工人花费时间为 17,即为完成所有生产任务的最短总时间。
【数据范围】
任务项数与工人数量满足 1 ≤ k ≤ m ≤ 500,即工人数量不会超过任务项数,且至少有 1 名工人和 1 项任务。