zoukankan      html  css  js  c++  java
  • 【C++STL/红黑树】POJ 3481 DoubleQueue

    POJ 3481 Double Queue

    描述:

    新成立的BIG-Bank在不切雷斯特开了一间新办公室,使用了由IBM罗马尼亚的现代计算机办公环境,运用了现代信息技术.一般来说,银行的每个顾客都有一个识别码K,并且每一个来银行的顾客都会被给予一个优先级P.银行主管的一个大胆想法震惊了公司的软件工程师.他希望有时候能打破传统,让服务窗口给优先级最低的顾客而不是优先级最高的服务.因此,管理系统会收到以下几种请求.

    0

    系统停止运行

    1 K P

    将编号为K的顾客以P的优先级加入等待名单

    2

    为优先级最高的顾客服务并且将其从等待名单中移除

    3

    为优先级最低的顾客服务并且将其从等待名单中移除

    你的任务是帮助软件工程师来编写这个顾客管理系统.

    输入:

    输入的每一行有一个请求;只有最后一行会要求停止运行(请求0).你需要保证当添加一个新顾客到名单中(请求1)时,名单中没有编码相同或优先级相同的顾客..

    输出:

    对于请求2和请求3,程序需要在不同行标准输出客户编号K,如果此时名单为空,那么输出0.

    Sample Input

    2
    1 20 14
    1 30 3
    2
    1 10 99
    3
    2
    2
    0

    Sample Output

    0
    20
    30
    10
    0

    这道题很显然是平衡树问题,对于平衡数,C++的STL库其实有一个自带的封装红黑树,就是set,这道题如果用STL库的set就非常简单了。
    注意几点,这道题需要记录客户数据,所以可以新开一个数组来记录(因为set中的元素就是键值也就是优先级,所以要单独记录顾客编号)。

    这里面用到的主要是set里的insert,end,begin和erase操作,简单讲一下
    insert(p)向容器中插入元素p
    begin()返回第一个元素的迭代器地址
    end()返回最后一个元素的迭代器地址
    erase(p)从容器中删除元素p,这里要注意,set中元素的值是唯一的。
    #include<set>
    #include<iostream>
    #define MAXN 10000010
    using namespace std;
    int a[MAXN],c[1000010],k,p,op;
    set<int>li(a,a+MAXN);
    set<int>::iterator it;
    int main(){
        li.clear();
        while(op=(getchar()-'0')){
            if(op==1){
                scanf("%d %d",&k,&p);
                c[p]=k;
                li.insert(p);
            }
            if(op==2){
                if(li.empty()){
                    printf("0
    ");
                    continue;
                }
                it=li.end();
                it--;
                printf("%d
    ",c[*it]);
                li.erase(*it);
            }
            if(op==3){
                if(li.empty()){
                    printf("0
    ");
                    continue;
                }
                it=li.begin();
                printf("%d
    ",c[*it]);
                li.erase(*it);
            }
        }
    }
  • 相关阅读:
    行为型模式之 命令模式
    结构型模式之 代理模式
    oop编程思想
    2013应届毕业生各大IT公司待遇整理汇总篇(转)
    python定义class
    python——博客园首页信息提取与分析(转载有改动)
    深入浅出TCP/IP协议
    python基础之socket
    python基础
    c++stl之stack
  • 原文地址:https://www.cnblogs.com/Kotori-Minami/p/10246695.html
Copyright © 2011-2022 走看看