hdu 1509
来源:互联网 发布:优化设计方案的方法有 编辑:程序博客网 时间:2024/05/26 20:21
题目大意:
是当输入PUT时,接收一个msg的名称,参数和优先级,将它放在队列尾,当输入GET时,如果队列是空的,输出“EMPTY QUEUE!”,如果非空,输出优先级最高的那条msg的名称和参数(也就是数值最小的),并把它从队列里删除。
解题思路:
1)这道题根据输出中包含“queue”,那么我们可以考虑一下使用queue(队列)来解决这个问题。然而在队列中,要出现后进先出的情况,这时我们便可以考虑使用优先队列来解决这个问题。。。。
2)。在这里,我对这个比较函数有一些自己的看法(可能不正确).其实,return a<b
,这个意思应该是“维持默认的排序方式”,而在一般情况下,默认的排序方式即为升序。而return a > b则表示采用相反于默认排序的方式进行排序。
在优先队列中,默认的排序方式是降序排序。
AC代码如下:
/* * 1509_1.cpp * * Created on: 2013年8月7日 * Author: Administrator */#include <iostream>#include <queue>using namespace std;struct Node{string name;int val;int priority;int num;friend bool operator<(Node a , Node b){if(a.priority != b.priority){//先输出优先级高的(即priority小的)return b.priority < a.priority;}//用来实现当优先级相同时根据进队顺序输出的功能return b.num < a.num;}};int main(){priority_queue<Node> q;Node cur , next;string str;int k = 0;while(cin >> str){if( str == "GET"){if(q.empty()){cout<<"EMPTY QUEUE!"<<endl;}else{cur = q.top();q.pop();cout<<cur.name<<" "<<cur.val<<endl;}}else{cin>>next.name>>next.val>>next.priority;//用来标记进队顺序,先进的num值小next.num = k++;q.push(next);}}}
- hdu 1509
- HDU 1509
- HDU 1509
- HDU 1509
- hdu 1509
- HDU-1509 优先队列
- hdu 1509 优先队列
- hdu 1509 优先队列
- hdu 1509队列优先
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- computeScroll函数的理解
- Wget url返回结果到指定文件
- 指令系统
- 2013 - ECJTU 暑期训练赛第七场-problem-H
- Android View.onMeasure方法的理解
- hdu 1509
- 敏捷开发的道与术
- FM滚动是出现竖线的地方
- 一个简单的C语言编译器
- Eclipse快捷键大全(转载)
- 配置 magic_quotes_gpc = off 无效的解决方法
- C++ 智能指针详解
- VC界面库
- struts.xml中action标签的学习