秘书领任务

r

考虑返回任务为空的判断即DeadLine=DateTime.MinValue

秘书状态

无任务

直接领取

有任务

有开始时间的任务

可能领取不开始时间能够完成的任务

有结束时间的任务

可以领取任务相对开始时间前能完成的任务

思路

查询秘书 秘书组

查询秘书 空闲时间

领取任务

成功

无符合任务

领取顺序

r

有结束时间的任务直接查询有开始时间的任务查询已经开始的并且开始时间+时长得出的结束时间

1本组一小时内的Top1

2非本组一小时内的Top1

3本组一小时外的Top1

4非本组一小时外的Top1

秘书时间30分

组内任务40

组外任务20

返回任务的几种情况

r

最初想法错了,后面的分析也就错了。在处理返回任务的时候不应该考虑秘书的空闲时间,只考虑返回哪个任务就好了。所以将返回结果变为数组,如果组内任务时间短直接返回,如果组外任务时间短将组内组外任务一起返回。之所以如果是因为秘书的空闲时间可能组外任务时间<秘书时间<组内任务时间。

组内任务

小于组外时间

大于组外时间

一小时内

小于空闲时间

大于空闲时间

一小时外

两个任务

组内任务<=组外任务

r

直接返回

组内任务>组外任务

r

返回两个

组内大于60,组外小于60

都小于60

都大于60

组外任务