打印队列(Printer Queue, Uva12100)
题目
- 题目网址:https://vjudge.net/problem/UVA-12100
- 大意:
给你打印任务的数量, 目标打印任务的序号, 目前的打印队列。 如果队头是目前最重要的任务, 则打印, 否则放回队尾。 问目标打印任务是第几个打印的(打印时间)。(放到队尾是没有时间的,只有打印需要时间)
知识点
- 优先队列的使用
思路
用优先队列实现相对比较简单,只需要设置一个优先队列& 一个队列。
- 优先队列用于比较当前队列的队头的优先级是否是最高的,只要按从小到大的顺序排列的数据结构都可以,不一定局限于优先队列。
- 队列存放正常的打印队列次序
每次利用优先队列比较队列队头是否最大(pq.top() == q.front()),如果相同则当前任务优先级最高,打印->时间++。否则,放至队尾即可,目标打印任务索引--。直到当前目标任务索引等于0且优先级最高,打印 -> 输出时间
代码
# include <cstdio>
# include <queue>
using namespace std;
vector <int> ans;
void time(priority_queue <int> pq, queue <int> q, int index){
int time = 0;
while(index != 0

最低0.47元/天 解锁文章
429

被折叠的 条评论
为什么被折叠?



