银行有m个接待窗口,用户分为vip和普通用户,vip可以插在普通用户的最前面。
- 数据格式为
(userType, ArrivalTime, ProcessTime),代表每个用户类型,到达时间和在窗口需要处理的时间。
我的思路是:
- 构造两个队列
deque,分别用于存储vip和普通用户的到达时间和处理时间 - 构造一个堆
heapq,用于存储m个窗口的处理完事件的时间 - 每次从
heapq中弹出一个最小值t,即空闲窗口或者所有占用窗口最先结束的窗口- 比较vip和普通用户队列中的最小值
A_m,优先选vip队列的到达时间,对应的处理时间为P_m - 如果
t比A_m小,说明窗口空闲,将t变成A_m+P_m - 如果
t比A_m大,说明窗口没有空闲的,直接将t变成t+P_m
- 比较vip和普通用户队列中的最小值