题面描述:
题目要求我们对一批任务和执行机进行匹配调度,任务和执行机类型分别为CPU型(0)、IO型(1)和通用型(2),其中通用型执行机可以执行任意类型的任务。每次任务和执行机按照优先级从高到低进行匹配,任务与执行机类型匹配则调度成功,执行机从数组中移除;若不匹配,则将执行机放回队列末尾。使用通用型执行机后,所有通用型执行机只能执行同一种类型任务。要求计算剩余的最小空置执行机数量。
题目思路
题目的重要条件是一旦2号机选择了转换为0号机或者1号机之后,所有的2号机都要做相同的转换。即所有的2号机最终要么变为0号机,要么变为1号机。同时也可以发现,不管是0号机和1号机怎么排列,都会被使用到,因为整个数组是循环的,即该题中的任务执行和机器的顺序无关,而只与0号机和1号机的数量有关。所以只需要讨论2号机变为0号机或者2号机变为1号机两种情况。然后计算该两种情况下机器的剩余情况。
当枚举2号机器变为0号机或者1号机之后,接下来的工作是模拟任务调度的过程,因为任务调度与机器是顺序无关,所以只需要统计出0,1号机的数量,当某时刻机器不足时直接break,从而求解出剩余的机器数量。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写