紫书第五章习题 5-7 UVA12100-打印队列

UVA12100-打印队列 题目大意: 现在有一个打印队列,里面的任务是无序的,每个任务有一个权值,打印机会从第一个任务开始执行,如果当前任务的权值是队列中最大的,那么就打印,否则就将该任务放置到队末。每次打印消耗一定的时间,求该序列中的任务分别在什么时候被打印。 这题开一个优先队列一个普通队列,队列里的元素出队,如果出队元素和优先队列队首元素相同就执行“打印”操作,否则就扔到队尾。 #include #includ 阅读详情

出处:https://blog.youkuaiyun.com/richr_wong/article/details/50190371

题目链接:https://vjudge.net/contest/231030#problem/G

题目大意:

现在有一个打印队列,里面的任务是无序的,每个任务有一个权值,打印机会从第一个任务开始执行,如果当前任务的权值是队列中最大的,那么就打印,否则就将该任务放置到队末。每次打印消耗一定的时间,求该序列中的任务分别在什么时候被打印。

这题开一个优先队列一个普通队列,队列里的元素出队,如果出队元素和优先队列队首元素相同就执行“打印”操作,否则就扔到队尾。

#include <iostream>  
#include <string>  
#include <queue>  
using namespace std;  
int main()  
{  
    int n;  
    cin>>n;  
    for(int i=0;i<n;i++)  
    {  
        int num, index;  
        queue<int> q;  
        priority_queue<int> pq;  
        cin>>num>>index;  
        for(int j=0;j<num;j++)  
        {  
            int rate;  
            cin>>rate;  
            pq.push(rate);  
            q.push(rate);  
        }  
        int x = 0;  
        while(true)  
        {  
            if(q.front()==pq.top())  
            {  
                if(x==index)  
                {  
                    cout<<num-q.size()+1<<endl;  
                    break;  
                }  
                else  
                {  
                    q.pop();  
                    pq.pop();  
                    x++;  
                }  
            }  
            else  
            {  
                int temp = q.front();  
                q.pop();  
                q.push(temp);  
                if(x==index)  
                {  
                    x=0;  
                    index=q.size()-1;  
                }  
                else  
                {  
                    x++;  
                }  
            }  
        }  
    }  
    return 0;  
}  

UVA 12100 打印机队列(Printer Queue, ACM/ICPC NWERC 2006) 【紫书第五章习题5-7】 算法概述:试了一下没用 STL 写,用有序对 pair<bool, unsigned char> 数组 q 保存每个任务的信息。第一个值类型为 bool ,当一个任务为你的任务时,该值为 true ,否则为 false 。第二个值存放优先级,范围 1~9 。 先读入全部数据,按上述形式存放在数组 q 中,并用 pos 和 pEnd 表示打印队列开始和结束的位置... 阅读详情

相关推荐

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3455

UVA12100:Printer Queue(打印队列)

作者:xq的acm之路题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3252题目大意:现在有一个打印队列,里面的任务是无序的,每个任务有一个优先级,打印机会从第一个任务开始执行,如果当前任务的优先级是队列中最大的,那么就打印,否则就将该任务放置到

xqacmer 798

DC/DC恒压输出控制原理与应用

DC/DC恒压输出控制

propor的专栏 4280

UVA12100 打印队列 Printer Queue

题意描述 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。 输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时刻。所有任务都需要1分钟打印。例如,打印队列为{1,1,9,1,1,1}

LXYDSF的博客 800

UVM仿真卡住了?别慌!手把手教你定位并解决PH_TIMEOUT超时错误

本文详细解析了UVM仿真中常见的PH_TIMEOUT超时错误,提供了从错误诊断到解决方案的完整指南。通过理解错误机制、分析调试技巧和常见问题场景,帮助验证工程师快速定位并解决这一棘手问题,同时分享了预防措施与最佳实践,提升仿真效率。

weixin_28683065的博客 368

图像传感器与信号处理——详解CCD与CMOS图像传感器

一文详解CCD与CMOS图像传感器一文详解CCD与CMOS图像传感器1. 图像传感器性能关键词1.1 噪声1.2 暗电流 一文详解CCD与CMOS图像传感器 本文主要总结了CCD与CMOS传感器的原理知识,参考书籍为《数码相机中图像传感器和信号处理》,英文版为《Image Sensors And Signal Processing for Digital Still Cameras》 1. 图像传...

weixin_44580210的博客 2万+

UVA12100 打印队列 解题报告

维护两个队列,一个普通的queue队列q,用于维护当前的打印机打印队列先后顺序,一个优先队列pq,用于维护当前的打印优先级。每次从q中出队一个文件,然后将其和pq的队首进行比对(也就是当前优先级最高的那个),优先级相同则代表现在要打印的就是这个(题目保证了每个文件的优先级唯一)。详细细节可见代码和注释。所有任务都需要1分钟打印。打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列)。

qq_45554473的博客 395

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,本文就实现以ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换。先来看投影后的效果: 在实现批量投影转换之前,需要两个投影文件:Sinusoidal.prj和MyAl

智慧空间实验室 3815

算法竞赛入门经典(第二版)-刘汝佳-第五章 C++与STL 习题(13/16)

说明本文是我对第五章16道习题的练习总结,建议配合紫书——《算法竞赛入门经典(第2版)》阅读本文。 另外为了方便做题,我在VOJ上开了一个contest,欢迎一起在上面做:第五章习题contest 如果想直接看某道题,请点开目录后点开相应的题目!!!习题习5-1 UVA 1593 代码对齐(vector)思路 此题的重点在于读入数据部分,读取每一行我用了getline,然后再用stringst

梁山伯的专栏 2744

2xmax96717+max96724+agx orin驱动代码

说明:这里主要解决max96717的设备地址和sensor地址映射,vc0->vc1多颗max96717+max96724使用配置思路如下: 1、改变max96717的pipez stream id,然后max96724的pipe绑定使用相应的stream id 2、max96717默认是vc0,把vc0改写成vc1\vc2\vc3,然后max96724再重新映射vc输出

mantouyouyou的博客 113

【linux】解决报错:Network error: Connection refused

【linux】解决报错:Network error: Connection refused

weixin_44502754的博客 4936

【UVA 12100】Printer Queue 题解(队列+优先队列)

计算机科学学生会中唯一的打印机正经历着极其繁重的工作量。有时,打印机队列中有100个作业,您可能需要等待数小时才能获得一页输出。由于某些作业比其他作业更重要,黑客将军为打印作业队列发明并实现了一个简单的优先级系统。现在,为每个作业分配1到9之间的优先级(9是最高优先级,1是最低优先级),打印机的操作如下。•从队列中取出队列中的第一个作业J。•如果队列中有某个作业的优先级高于作业J,则将J移至不打印队列。•否则,打印作业J(不要将其放回队列中)。

HEX9CF的技术博客 390

科研项目数据抓取:Python爬虫实现与分析

本文详细介绍了如何使用Python爬虫抓取科研项目的数据,涵盖了从目标数据源选择到数据存储与分析的整个过程。通过使用。

2201_76125261的博客 1710

UVA12100,打印队列 Printer Queue

【代码】UVA12100,打印队列 Printer Queue。

zhizheburuaihe_的博客 414

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

洛谷-UVA12100 打印队列 Printer Queue

题目描述 PDF 输入格式 输出格式 题意翻译 学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。 打印机的运作方式如下:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J(此时不会把它放回打印队列...

大学生小汪的成长博客 956

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UVa12100 打印列队

题意:有一个打印机,有一些任务在排着队打印,每个任务都有优先级。打印时,每次取出队列第一个任务,如果它的优先级不是当前队列中最高的,就会被放到队尾,否则就打印出来。输出初始队列的第m个任务的打印时间,每次打印花费单位1的时间。 Sample Input 3 //有3组样例 1 0 5 4 2 //有4个作业 在查找下表为2这个作业打印完的时间 1 2 3 4 //排序着的作...

女神的博客 277

【UVA No. 12100】 打印队列 Printer Queue

【UVA No. 12100】 打印队列 Printer Queue

代码改变世界 1243

打印队列 UVA 12100

        一开始的思路是用两个队列,一个优先队列,一个普通的队列,普通队列的首元素与优先队列的首元素比较,元素不相同的话将普通队列的首元素移至最后,时间不消耗;如果相同,打印当前内容,时间+1分钟,同时移除首元素。结果证明不可行,因为优先队列中,优先级相同的情况下,不是按照输入的先后顺序排列的。下面是代码struct Node { int p; string s; friend bo...

xiaoruanzhu的博客 706

uva12100(打印队列)

#include #include #include #include #include #include using namespace std; #define MAXN 1000 int main() { int T; int time = 0; int n, d,temp; cin >> T; while (T–) { deque q; deque q1; time = 0;...

CV工程师呀 343

UVA 12100

题意:有一个打印机,有一些任务在排着队打印,每个任务都有优先级。打印时,每次取出队列第一个任务,如果它的优先级不是当前队列中最高的,就会被放到队尾,否则就打印出来。输出初始队列的第m个任务的打印时间,每次打印花费单位1的时间。 思路:用队列模拟一下。建一个的队列q,num表示优先级,pos表示位置。然后再按照优先级建一个优先队列pq。 每次先把q的队首拿出来 (1)不是当前优先级最高的,nu

DS-K的博客 1659

uva12100 Printer Queue (队列模拟, 据说是优先队列,错了)

题意:给你打印任务的数量, 目标打印任务的序号, 目前的打印队列。   如果队头是目前最重要的任务, 则打印, 否则放回队尾。 问, 目标打印任务是第几个打印的。 思路:用队列模拟打印任务队列, 每个元素是带有{int 重要性、bool 是否是目标打印任务}的结构体。然后按照题意去模拟便是。 关键在于如何判断队头任务 是目前最重要的任务。 只要在输入的时候把重要性另存在一个max[]数组里,

MistKafka的专栏 2538

习题5-7 打印队列 UVa12100

1.题目描述: 2.解题思路

Skyline 1195

uva12100解题报告

水题留念 一个队列模拟进出操作,一个优先队列保存优先级,模拟过程输出结果 #include #include #include #include using namespace std; const int maxn=100+10; typedef pair P; struct cmp { bool operator () (const P &p1,const P &p2)cons

董成荣的博客 821

习题5-7 打印队列(Printer Queue, UVa12100)

习题5-7 打印队列(Printer Queue, UVa12100) 1.adding and removing jobs from the queue is instantaneous. #include #include #include #include #include #include #include #include #include #include #in

%%% 787

打印队列(Print Queue ,ACM/ICPC NWERC 2006,UVa12100)

打印队列(Print Queue ,ACM/ICPC NWERC 2006,UVa12100)   题目描述: 给你打印任务的数量, 目标打印任务的序号, 目前的打印队列。 如果队头是目前最重要的任务, 则打印, 否则放回队尾。 问: 目标打印任务是第几个打印的。 思路详解: 用一个priority_queue去寻找优先级最高的元素,然后用一个deque&lt;pair&lt;in...

公子世无双 2565
上一篇: 紫书第五章习题 5-6 UVa 1595 Symmetry(暴力)
下一篇: 紫书第五章习题 5-8 UVA230-图书馆管理
JXUFE_ACMer
博客等级 码龄9年 20粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值