队列(优先队列 结构体)

TonyY 有幸进入银行实习, 作为一名柜台职员, 他的任务就是在正确的时间
为正确的人服务。
每个来银行的人, 都有一个 vip 值, TonyY 需要做到每服务完一个客户后,
找出队列中 vip 值最高的人为他服务,之后被服务的人离开队列。在他为客户服
务的过程中,随时都会有新的客户来排队。现在他想知道,每次叫号的时候,叫
到的人会是谁。
★数据输入
输入第一行为一个正整数 N(0<N<=100000),表示操作数。
接下来 N 行, 每行一个操作。
“PUT name num”表示有一个新客户进入队列, vip 值为 num
(0<length(name)<=20, 0<num<=10^9, name 中只会有大小写字母)。
“GET” 表示 TonyY 要叫号了。
输入数据保证所有人的 vip 值两两不一致。
★数据输出
每次叫号时, 输出被叫到号的人的名字, 如果当时没人排队,输出一行
“Sleep!”。

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
using namespace std;
struct custom
{
    string name;
    int vip;
    bool operator < (const custom &c) const
    {
        return vip<c.vip;
    }
}ct;

priority_queue<custom>    q;
int main()
{
    string op,name;
    int n,i,j,vip;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        cin>>op;
        if(op=="PUT")
        {
            cin>>ct.name>>ct.vip;
            q.push(ct);
        }
        else if(op=="GET")
        {
            if(q.size()!=0)
            {
                ct = q.top();
                cout<<ct.name<<endl;
                q.pop();
            }
            else
                cout<<"Sleep!"<<endl;
        }
    }
    return 0;
}
        
时间: 2024-10-24 15:10:31

队列(优先队列 结构体)的相关文章

POJ: 2413 ——优先队列——结构体cmp函数一级排序

我要翻译题目!!! /* A group of cows grabbed a truck and ventured on an  expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck's fuel tank. The truck now leaks one unit of fuel ev

C++ STL——优先队列的结构体表示方法

优先队列是队列的一种,但是自身具有一定的排序功能,所以不具有队列“先进先出”的性质 刚刚接触优先队列,看过网上的用法后感觉还是太过于朦胧,所以打算自己写一个稍微细节一点的. 头文件 #include<queue> 常用操作 q.push() //放入元素 q.pop() //弹出元素 q.empty()//判断队列是否为空 q.top()//返回头部元素 q.size()//返回队列元素个数 声明方式 priority<int>q; 默认的情况是大顶锥,及先输出的是元素较大的: 如

timus 1242. Werewolf【队列+结构体】

题目链接http://acm.timus.ru/problem.aspx?space=1&num=1242 大致题意:村庄里有几个人不幸被害,是狼人干的!(插一句,这里可以想到一部电影<狼人>,很惊悚),现在就是需要找出可能是狼人的村民! 已知狼人不会去杀自己的祖宗,也不会杀自己的后代.狼人的父母不超过2个人!(儿女?这个不清楚). 这里给出村里人数n(编号1~n), 给出关系a b 其中a是b的子(女),b是a的父(母) 也给出被害村民的编号. 递增输出可能是狼人的村民的编号,如果没

poj 2243 bfs 利用 结构体中的step成员保存步数 ,STL的队列

//BFS #include <iostream> #include <queue> using namespace std; bool used[8][8]; int move[8][2]={1,2, -1,2, -2,1, -2,-1, -1,-2, 1,-2, 2,-1, 2,1}; struct position { int i,j; int step; position(int a,int b,int c) { i=a; j=b; step=c; } }; int mai

memcached源码分析-----LRU队列与item结构体

转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42869325 LRU队列: 之前的<slab内存分配>博文已经说到一个slab class里面的所有slab分配器都只分配相同大小的item,不同的slab class分配不同大小的item.item结构体里面有一个slabs_clsid成员,用来指明自己是属于哪个slab class的.这里把slabs_clsid值相同的item称为是同一类item. slab分配器负责分配一个i

【STL】栈+队列+优先队列(详)+ 拯救行动题解

一.栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素. 说通俗一点,就是一种有口无肛门的数据结构 咳咳...是一种满足"后进先出"规则的数据结构.有PUSH和POP两种操作.PUSH:把元素压入栈顶 POP:把元

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

hdu 4941 Magical Forest(STL map &amp; 结构体运用)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 Magical Forest Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 220    Accepted Submission(s): 105 Problem Description There is a forest c

std::map使用结构体自定义键值

使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; mp[(Node){x,y}]++; 这样子的话,会出现一堆报错 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(