题意:有多组数据,每组数据给出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=;
int q[maxn]; //模拟的队列
int t,n,m;
int first,rear; //头指针和尾指针
int main()
{
scanf("%d",&t);
while(t--){
//maxv为队列中的最大优先级,ans为最后输出目标文件所需要的时间
int maxv=,ans=;
first=rear=;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%d",&q[i]);
maxv=(q[i]>maxv)?q[i]:maxv;
}
rear=n-;
while(){
//如果队首的优先级不是最大的,那么将它移到队列末尾
if(q[first]<maxv){
rear=(rear+)%n;
q[rear]=q[first];
//如果是要打印的目标文件,那么更新目标文件的位置m
if(first==m)
m=rear;
first++;
first%=n;
}
else{
//队首的优先级最大,则打印队首文件,如果为目标文件,则直接退出循环。
ans++;
if(first==m)
break;
first++;
first%=n;
}
int point=first;
maxv=;
//找出剩下队列中的最大优先级
while(point!=rear){
maxv=(q[point]>maxv)?q[point]:maxv;
point=(point+)%n;
}
maxv=(q[point]>maxv)?q[point]:maxv;
}
printf("%d\n",ans);
}
return ;
}

POJ 3125 Printer Queue(队列,水题)的更多相关文章

  1. POJ 3125 Printer Queue

    题目: Description The only printer in the computer science students' union is experiencing an extremel ...

  2. (队列的应用5.3.3)POJ 3125 Printer Queue(优先队列的使用)

    /* * POJ_3125.cpp * * Created on: 2013年10月31日 * Author: Administrator */ #include <iostream> # ...

  3. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  4. POJ 3984 - 迷宫问题 - [BFS水题]

    题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...

  5. POJ 3176 Cow Bowling (水题DP)

    题意:给定一个金字塔,第 i 行有 i 个数,从最上面走下来,只能相邻的层数,问你最大的和. 析:真是水题,学过DP的都会,就不说了. 代码如下: #include <cstdio> #i ...

  6. poj 1007:DNA Sorting(水题,字符串逆序数排序)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 80832   Accepted: 32533 Des ...

  7. poj 1004:Financial Management(水题,求平均数)

    Financial Management Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 126087   Accepted: ...

  8. poj 1658 Eva's Problem(水题)

    一.Description Eva的家庭作业里有很多数列填空练习.填空练习的要求是:已知数列的前四项,填出第五项.因为已经知道这些数列只可能是等差或等比数列,她决定写一个程序来完成这些练习. Inpu ...

  9. POJ 2259 - Team Queue - [队列的邻接表]

    题目链接:http://poj.org/problem?id=2259 Queues and Priority Queues are data structures which are known t ...

随机推荐

  1. 详解JSTL的forEach标签

    详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍.      <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...

  2. 解析json数据总结

    json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的. 数组类型:[{"id":"a001","name":" ...

  3. 几道hihocoder不会做的题

    1.https://hihocoder.com/problemset/problem/1433?sid=970287 boarding passes,不会做,看的别人的代码,现在还不是很理解. 2.  ...

  4. IOS引导页拨动4张图片最后一张停三秒进入主页,页面推送

    // //  ViewController.m // // //  Created by 张艳锋 on 15/8/26. //  Copyright (c) 2015年 张艳锋. All rights ...

  5. iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合

    1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...

  6. 开始进入Windows Phone 8开发

    和大家一起分享从零开始,入手Windows Phone 8开发,大家一起来吧!

  7. Linux磁盘与文件系统概念理解

    磁盘级别概念     这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起.如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每 ...

  8. web前端学习之HTML CSS/javascript之一

    前端编码之路之坎坷,web前端应该一直是个战场吧,各种浏览器的不兼容,各种小细节的修改,要往一个好的产品经理方向走,实在是难,昨天听了一位十年经验的产品经理讲座,最重要的恐怕就是协调资源的能力,而协调 ...

  9. Bundle、Intent、SharedPreferences

    Intent与Bundle的共同点:都继承Parcelable Intent传值与Bundle传值的区别 eg:我现在要从A界面   跳转到B界面或者C界面   这样的话 我就需要写2个Intent  ...

  10. flex基础学习

    Flex是Adobe开发的一种RIA,富互联网应用,用Flex开发的东西都可以使用Flash做出来,但是Flex主要是面向的程序开发人员,前台使用ActionScript和MXML. 上面介绍了fle ...