C++ 复制书稿

【问题描述】

假设有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本书交

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值