zoukankan      html  css  js  c++  java
  • POJ 3125 Printer Queue(队列,水题)

    题意:有多组数据,每组数据给出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];
                    //如果是要打印的目标文件,那么更新目标文件的位置m
                    if(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
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    Chrome浏览器与常用插件推荐
    时间戳 转换24小时制
    fis3 开启相对地址
    web手机端禁止滑动,web手机端禁止上下滑动。
    rem的用法
    手机端复制,pc端复制
    ruby 镜像安装
    使用Potree渲染大规模点云-踩坑记录
    移动端真机调试神器-spy-debugger
    手撕Promise.any
  • 原文地址:https://www.cnblogs.com/chenxiwenruo/p/3341026.html
Copyright © 2011-2022 走看看