【问题描述】
假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。
现在要求分配给一个机器的任务必须是连续的,比如不能把1、3、4号任务分配给同一个机器。
现在请你设计一种方案,使得完成所有任务的时间最短。完成任务的时间取决于耗时最长的那台机器。
【输入】
第一行两个整数n,k;
第二行n个整数,第i个整数表示第i个任务所需要的时间ti。
【输出】
共k行,每行两个整数,第i行表示第i个机器分配的任务的起始编号和终止编号。K行的起始编号应该从小到达排列,如果有多解,则尽可能让前面的人少抄写。
【输入输出样例】
machine.in |
machine.out |
9 3 1 2 3 4 5 6 7 8 9 |
1 5 6 7 8 9 |
【数据范围】
对于20%的数据,n≤50。
对于100%的数据,k≤n≤500。
本题可以使用动态规划解决,设f(i,j)为当前j本书交