单核可抢占调度:用事件推进模拟。
(-priority, index)(优先级高、下标小者优先)。不要按单位时间模拟(到达可达 109),必须事件跳转。
一台单核 CPU 上要调度 n 个任务。第 i 个任务(下标从 0 开始)由三个数组给出:
arrival[i]:到达时刻(从此刻起才可被调度)duration[i]:需要占用 CPU 的总时长(可被打断,剩余时间累加到凑满为止)priority[i]:优先级,数值越大优先级越高时间按整数时刻推进。调度规则(可抢占):
请返回长度为 n 的数组,ans[i] 为任务 i 的完成时间。
请实现:
finishTimes(arrival: int[], duration: int[], priority: int[]) -> int[]
三行整数数组:arrival、duration、priority,长度均为 n。
约束:
一行整数数组,形如 [4, 2, 6](元素间逗号后有一个空格)。
输入:
[0, 1, 2]
[3, 1, 2]
[1, 2, 1]
输出:
[4, 2, 6]
说明:
故完成时间为 [4, 2, 6]。
输入:
[0]
[5]
[1]
输出:
[5]
说明:唯一任务从 0 跑到 5,完成时间为 5。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.