今天做
亚信的笔试题遇到的轮询调度算法,和春招做的百度笔试题短作业优先调度算法很相似,但是难度要UPUP。做题的过程中,因为没有正确地处理迭代器失效的问题浪费了好多时间(>﹏<。)~,看来有必要把STL再看一遍了!不废话了,直接上题目。
轮询调度算法
如果一个系统可以在单个CPU上运行多个并发作业,那么就该系统而言,“调度”是指:系统选择运行哪些任务,何时运行,何时中断以及以何种方式运行或中断。轮询调度规则是指:每个作业运行时间固定,该作业结束后,切换到下一个作业。一个作业的等待时间是指运行前需要等待的总时间。每个作业会在特定时间到达,等待调度,并占用一段固定时间运行。新作业到达后系统会把该作业正在等待CPU的现有作业之后。
题目描述:
给定提交列表,使用轮询策略计算所有作业的平均等待时间。函数wait_time_robin包含两个含有作业到达时间arrival和作业运行时间run的整数数组,还有一个表示作业数的整数n,和一个表示轮询策略使用的固定时长得整数q。作业到达时间和作业运行时间根据作业到达时间升序排列。对于同时到达的作业,按照其在到达时间数组中的顺序处理,可以假设,作业到达时,CPU一直未空闲。返回值为使用轮询策略算出的作业平均等待时间(浮点数)。
假设 0 <= 作业到达时间 < 100 且 0 <