UVa12100,Printer Queue

水题,1A过的

数据才100,o(n^3)都能过,感觉用优先队列来做挺麻烦的,直接暴力就可以了,模拟的队列,没用stl

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <queue>
#define maxn 100+5
using namespace std;
int mid[maxn],v[maxn],q[maxn*maxn],ans;
int n,m,id;
int init(){
    memset(mid,0,sizeof(mid));
    memset(v,0,sizeof(v));
    memset(q,0,sizeof(q));
    cin>>n>>m;
    id=0;ans=0;
    for (int i=0;i<n;i++){
        mid[i]=i;
        cin>>v[i];
    }
}
int find_max(){
    int max=0;
    for (int i=0;i<n;i++)
        max=v[i]>max?v[i]:max;
    return max;
}
int work(){
    int head,tail,max;
    head=0;tail=n-1;
    for (int i=0;i<n;i++)
        q[i]=i;
    while (head<tail){
        int t=find_max();
        if (q[head]==m&&t==v[m]){
            break;
        }else if (v[q[head]]==t) {
            v[q[head]]=0;
            head++;
            ans++;
        }else {
            tail++;
            q[tail]=q[head];
            head++;
        }
    }
}
int main()
{
    int T;
    cin>>T;
    while (T-->0){
        init();
        work();
        cout<<ans+1<<endl;
    }
}

UVa12100,Printer Queue

时间: 2024-10-03 23:07:05

UVa12100,Printer Queue的相关文章

12100 Printer Queue(优先队列)

12100 Printer Queue12 The only printer in the computer science students’ union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in the printer queue and you may have to wait for hours to get a single page of output. Bec

Printer Queue

Description The only printer in the computer science students' union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in the printer queue and you may have to wait for hours to get a single page of output. Because some

poj 3125 Printer Queue (队列)

 Printer Queue Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3679   Accepted: 1975 Description The only printer in the computer science students' union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs i

POJ 3125 Printer Queue 数据结构 队列

Printer Queue Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4329   Accepted: 2269 Description The only printer in the computer science students' union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in t

从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)

从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数组)控制,map中每个槽指向一个固定大小的缓冲(连续的线性空间). deque的迭代器,关键的四个指针: cur //所指缓冲区中的现元素 first //所指缓冲区中的头 last //所指缓冲区中的尾 node //指向中控的槽 start指向中控第一个槽位的buffer中的第一个元素,fini

打印队列 (Printer Queue,ACM/ICPC NWERC 2006,UVA12100)

题目描述: 题目思路: 使用一个队列记录数字,一个优先队列记录优先级,如果相等即可打印: 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 int main(int argc, char *argv[]) 5 { 6 int t; 7 cin >> t; 8 while(t--) 9 { 10 int n,pos; 11 queue<int> q ; 12 priority_q

hdu 1972.Printer Queue 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1972 题目意思:需要模拟打印机打印.打印机里面有一些 job,每个job被赋予1-9的其中一个值,越大表示优先级越高,越早被打印.job这个队列是会向前推进的,如果排在最前面的job优先级最高,那么才打印,否则就把这个job放到队列最后.问给出 m 这个位置的job要经过多长时间才被打印. 规定每次打印时间为一分钟,移动 job到队列最后不占时间. 练开优先队列就继续吧---不过这题不是咯. 仅仅用

UVa: 12100 - Printer Queue

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3252 题目描述:有一些文件需要打印机打印,每个人物有不同的优先级(1-9),打印机的运作方式为:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把任务放到打印队列的尾部,否则打印任务J.输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(对首位置为0).

SOJ 1443. Printer Queue

题目大意:输入整数t,代表测试样例的数量.每个测试样例首先输入整数n和整数m,分别代表队列中作业的数目和目标作业当前位置.然后下一行输入n个大小为1-9的整数,分别代表n个作业的优先级.每次检查队列头部,若队列头部作业的优先级是队列中的最大值,则抛出作业:否则将该作业放入队尾重新排队.要求输出目标作业是第几次被抛出的. 解题思路:构建结构体,包含作业的id(用作业开始的位置作为id)和作业的优先级.模拟抛出作业的过程.利用优先队列保存队列的优先级,能够更高效的判断队列优先级的最大值. 代码如下: