首页 > 其他 > 详细

任务安排问题 贪心 朴实思路

时间:2021-02-15 22:56:24      阅读:28      评论:0      收藏:0      [点我收藏+]

【问题描述】有n个任务1~n。假设:

同一个时间单位你只能处理一项任务;

任务i只能在时刻 ri 后开始处理。 (r1,…rn是给定的)

任务i需要 pi个时间单位才能完成。(p1,…,pn是给定的)

一个任务可分成多次处理(可停下来等之后继续处理)。

设计方案使得∑ti最小,ti为任务i被完成的时刻。

例:

技术分享图片

 

 

吐槽:这个题的要求:"使得∑ti最小"太奇怪了,不懂有什么实际意义,比如说所有任务完成时刻最小还有实际意义,这个要求可能只是为了作为"贪心"的练习题吧

朴素解法:

用一个数组(队列)存下目前能开始的任务,然后挑需要时长最短的来做一下
记录新任务入队时间点,在时间推进过程中判断有无新任务入队

定义‘重要时间点‘:有任务结束或新任务入队
每两个重要时间点之间都 遍历队列找时长最短的(可堆优化)

例如上图方案B:

时刻1~时刻2之间挑任务1(队列中仅有一个任务)

时刻2~时刻3之间挑任务2

时刻3(新任务入队)~时刻4(一个任务完成)挑任务2

时刻4~时刻6挑任务3

时刻6~时刻9挑任务1

 

最后:本题没有找到oj就不附上代码了,有找到oj的朋友还望告知给博主QAQ

任务安排问题 贪心 朴实思路

原文:https://www.cnblogs.com/laozhu1234/p/14404100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!