紫书第五章习题 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 表示打印队列开始和结束的位置... 阅读详情

相关推荐

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 247

UVA12100:Printer Queue(打印队列)

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

xqacmer 798

S32DS IDE调试技巧:如何用条件断点精准捕获汽车电子MCU的硬件状态变化

本文详细介绍了S32DS IDE中条件断点功能在汽车电子MCU开发中的应用技巧。通过精准捕获硬件状态变化,工程师可以高效调试外设寄存器异常、时序敏感型交互等复杂场景,大幅提升汽车电子系统的开发效率。文章还提供了多种实战案例和性能优化建议,帮助开发者充分利用S32DS的调试功能。

CAT789的专栏 208

UVA12100 打印队列 Printer Queue

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

LXYDSF的博客 800

全网最全医学图像数据汇总

本仓库汇总了多个领域的医学图像开源数据集,涵盖CT、MRI、超声、内窥镜、病理、多模态、PET、OCT以及皮肤镜等多种成像技术。每个数据集均详细列出了任务类型、部位、格式、数量及下载链接,旨在为医学图像研究者提供便捷的资源导航。⚠️:这些数据集仅适用于学术研究用途。

2401_83173765的博客 3319

【SeedLab】Packet Sniffing and Spoofing Lab

本节实验要求:借助Scapy库,实现网络流量的捕获与伪造。

cold_windx的博客 4515

UVA12100 打印队列 解题报告

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

qq_45554473的博客 395

i.MX6ULL驱动开发 | 31 - Linux内核网络设备驱动框架

net_device结构体在内核中指代一个网络设备,定义在,是一个非常大的结构体,包含网络设备的属性描述和操作接口,其中一些关键的成员如下。Linux在轮询处理机制和中断处理机制的基础上,提出了一种高效的网络处理技术NAPI。NAPI的核心思想是不全部采用中断来读取网络数据,而是采用中断来唤醒数据接收服务程序,在接收服务程序中采用poll的方法来轮询处理数据。提高短数据包的接收效率,减少中断处理的时间。...

Mculover666的博客(嵌入式) 1103

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

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

梁山伯的专栏 2744

使用Google Earth Engine下载JRC全球水体数据

通过Google Earth Engine平台和提供的源代码,研究人员和水资源管理者可以方便地获取和利用这一重要的水资源监测数据集,从而开展相关的研究和决策支持工作。要使用Google Earth Engine下载JRC全球水体数据,首先需要在Google Earth Engine平台上进行注册和登录。JRC全球水体数据是由欧洲联合研究中心开发的高分辨率全球水体分类数据集,覆盖了整个地球的陆地和水域。下载完成后,你可以使用各种遥感数据处理软件来打开和分析这些数据,以满足不同的研究和应用需求。

LrlDebug的博客 1158

STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联

STM32G4电机控制外设应用笔记摘要:本文详细介绍了TIM1高级定时器生成三对互补PWM波的配置方法(预分频器PSC=30000,重装载值ARR=10000),重点说明需断开电机连线避免干扰。通过STM32CubeMX配置TIM1通道4触发ADC采样,设置RCR分频参数,并给出Keil代码修改要点。第二部分探讨了TIM1、ADC、比较器和DAC的级联应用,包括电流采样触发时序(在PWM波峰值前采样)和过流保护机制。配置步骤包含DAC3作为比较器负输入端、设置Break触发封波保护,并附关键代码段实现外设联

qq_43091070的博客 1102

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

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

HEX9CF的技术博客 390

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

9794

UVA12100,打印队列 Printer Queue

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

zhizheburuaihe_的博客 414

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

洛谷-UVA12100 打印队列 Printer Queue

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

大学生小汪的成长博客 956

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UVa12100 打印列队

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

女神的博客 277

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【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、付费专栏及课程。

余额充值