题意:有多组数据,每组数据给出n,m,n表示需要打印的文件个数,m表示要打印的目标位置(m为0~n-1)。
    接下来给出n个数,第i个值对应第i-1个位置的优先级大小。
    打印规则如下:
    将队列中的第一个打印工作J从队列中取出;
    如果在队列中有优先级高于J的打印工作,则不打印J,将J移到队列最后端;
    否则打印J。
    每打印一个需要1分钟,问到目标文件被打印完成需要多少分钟。

#include <iostream>
#include <stdio.h>
#include <stack>
#include <string.h>using namespace std;
const int maxn=110;
int q[maxn];  //模拟的队列
int t,n,m;
int first,rear; //头指针和尾指针
int main()
{scanf("%d",&t);while(t--){//maxv为队列中的最大优先级,ans为最后输出目标文件所需要的时间int maxv=0,ans=0;first=rear=0;scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&q[i]);maxv=(q[i]>maxv)?q[i]:maxv;}rear=n-1;while(1){//如果队首的优先级不是最大的,那么将它移到队列末尾if(q[first]<maxv){rear=(rear+1)%n;q[rear]=q[first];//如果是要打印的目标文件,那么更新目标文件的位置mif(first==m)m=rear;first++;first%=n;}else{//队首的优先级最大,则打印队首文件,如果为目标文件,则直接退出循环。ans++;if(first==m)break;first++;first%=n;}int point=first;maxv=0;//找出剩下队列中的最大优先级while(point!=rear){maxv=(q[point]>maxv)?q[point]:maxv;point=(point+1)%n;}maxv=(q[point]>maxv)?q[point]:maxv;}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/chenxiwenruo/p/3341026.html

POJ 3125 Printer Queue(队列,水题)相关推荐

  1. poj 3125 Printer Queue(STL注意事项)

    http://poj.org/problem?id=3125 这道题没什么突出的地方,是一道很水的题,可以用list,也可以用queue来解决.(用list解决的代码我就不写了)把它写上来,只是因为我 ...

  2. POJ 1936 字符匹配(水题)

    题目链接: http://poj.org/problem?id=1936 题目大意: 给定字符a,b,问b中去掉一些字符后能不能得到a 解题思路: 暴力从前往后扫描一遍即可. AC代码: /*** @ ...

  3. poj 3095 Linear Pachinko 模拟水题

    题意: 给一个字符串,求小球随机放在上面进洞或到达两边之外的期望. 分析 水题,直接模拟. 代码: //poj 3095 //sep9 #include <iostream> using ...

  4. POJ 1840 Eqs 解方程式, 水题 难度:0

    题目 http://poj.org/problem?id=1840 题意 给 与数组a[5],其中-50<=a[i]<=50,0<=i<5,求有多少组不同的x[5],使得a[0 ...

  5. 【POJ 2503】Babelfish(水题)stl map存取即可

    题目链接 题目链接 http://poj.org/problem?id=2503 题意 英文A <=> 方言B 输入B,求A Code(G++) #include <iostream ...

  6. POJ 3087 Shuffle'm Up(水题)

    题目链接 蒙姐跟我说了题意,就很简单了,类似打扑克中的插牌.磕磕绊绊,终于把POJ第三次训练刷完了. 1 #include <cstdio> 2 #include <cstring& ...

  7. 单调队列水题 刷广告

    [问题描述] 最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N个建筑. afy决定在上面找一块尽可能大的矩形放置广告牌.我们假设每个建筑物都有一个高度, 从左到右给出 ...

  8. POJ 2017 No Brainer(超级水题)

    一.Description Zombies love to eat brains. Yum. Input The first line contains a single integer n indi ...

  9. 【POJ - 3125 】Printer Queue(模拟,队列+优先队列,STL)

    题干: The only printer in the computer science students' union is experiencing an extremely heavy work ...

  10. 蓝桥杯 参考题目 黄金队列(水题)

    黄金分割数0.618与美学有重要的关系.舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子.... 黄金分割数 ...

最新文章

  1. SVN checkout
  2. docker虚拟机动态扩展内存
  3. 设置模态框开始是隐藏状态_有限元仿真分析误差来源之材料参数设置,小心为妙!...
  4. 三心二意,助你好运?
  5. android 动态修改菜单,如何在Android的“选项”菜单上更改MenuItem?
  6. 小程序canvasu真机上数据图片不能使用
  7. [js] callee和caller的区别和作用是什么?
  8. 楼盘管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
  9. (转)“版本上线延时”问题与对策的探讨
  10. HAWQ取代传统数仓实践(一)——为什么选择HAWQ
  11. 电脑自带蓝牙与HC-06蓝牙模块使用串口助手通信
  12. DEFCON 23|利用U盘60秒打开保险柜
  13. Arduino - 看门狗定时器(WDT:Watch Dog Timer)
  14. iphone开发笔记一 mac os 10.7.2安装与配置
  15. alienware Win8 系统安装
  16. xml学习(1)xml的几种文件格式
  17. 第二章 存储,2.2 AliCloudDB--双11商家后台数据库的基石(作者:玄惭)
  18. 软考中级 真题 2013年下半年 系统集成项目管理工程师 基础知识 上午试卷
  19. Face Recognition数据集总结
  20. mysql 求上个月、上上个月的第一天和最后一天

热门文章

  1. nodejs安装anywhere快速启动一个web服务
  2. [渝粤教育] 江苏食品药品职业技术学院 食品生物化学 参考 资料
  3. [渝粤教育] 中国地质大学 国际贸易理论 复习题
  4. 【渝粤题库】陕西师范大学209015公共经济学作业(高起本、专升本)
  5. 【Python实例第7讲】真实数据集的异常检测
  6. smartsvn 8.6.6 for linux 的安装与破解
  7. Unity AnimatorController 混合树 状态机 骨骼
  8. DWRUtil.addOptions
  9. Java 核心系列教程
  10. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task