打印队列(Printer Queue, Uva12100)

打印队列(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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值