poj 3481 double queues

Posted by 111qqz on Friday, July 3, 2015

TOC

http://acm.hdu.edu.cn/showproblem.php?pid=1908

看到有两个优先级,然后题目中又有queue。。。就想到了优先队列。。。

但是优先队列的cmp函数没搞懂,因为比较的是结构体,好像要重载< 什么的。

然而并不会。

其实用map就可以做。。。

map在插入的时候可以自动按关键字排序,简直好评如潮!

/* ***********************************************
Author :111qqz
Created Time :2016年02月19日 星期五 15时44分06秒
File Name :3481.cpp
************************************************ */

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <stack>
#include <queue>

using namespace std;
typedef long long LL;
const int inf = 8E8;



int cmd;
map<int,int>a;
int p,k;

int main()
{

    while (scanf("%d",&cmd)!=EOF&&cmd)
    {
       if (cmd==1)
       {
           scanf("%d %d",&k,&p);
           a[p]=k;
       }
       if (cmd==2)
       {
           if (a.empty())
           {
               cout<<"0"<<endl;
           }
           else
           {
               cout<<a.rbegin()->second<<endl;
               a.erase(a.find(a.rbegin()->first));
           }
       }
       if ( cmd==3 )
       {
           if (a.empty())
           {
               cout<<"0"<<endl;
           }
           else
           {
               cout<<a.begin()->second<<endl;
               a.erase(a.begin());
           }
       }
    }

    return 0;
}

「真诚赞赏,手留余香」

111qqz的小窝

真诚赞赏,手留余香

使用微信扫描二维码完成支付