我是靠谱客的博主 秀丽太阳,最近开发中收集的这篇文章主要介绍ACM-Hdu-看病要排队(STL优先队列),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    此题是有坑的,具体体现在以下方面:

                           1.    一个有三个医生, 需要建立三个 优先队列

                           2.   结构体排序的比较函数需要特别的注意(写法不会的话,以后我会补上 语法讲解)

                           

#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
/*
优先队列: q.top() --> 在队列中查找优先权最大的元素 有限队列插入和删除都是 O(lgn)
优先级最高的在最前面
*/
struct Node
//此题的坑在于————————> 排序的稳定性,如果两个数一样,不能交换
{
int priority;
int index;
bool operator<(const Node &b) const
{
if ( priority != b.priority)//不等于就倒退
return priority < b.priority;
return index > b.index;
}
};
int main()
{
int n;
while( ~scanf("%d", &n) )
{
priority_queue<Node> que[4];//系统默认元素值大的优先级高
int ccccc = 1;
for(int i = 0; i < n; ++i)
{
char str[10];
scanf("%s", str);
if( !strcmp(str, "IN"))
{
Node temp;
temp.index = ccccc++;//记录这个病人的索引
int doctor_index;//病人要看的医生的索引
int priority;//这个病人的优先级
scanf("%d%d",&doctor_index,&priority);
temp.priority = priority;
que[doctor_index].push(temp);
}
else if( !strcmp(str, "OUT"))
{
int doctor_index;
scanf("%d", &doctor_index);
if( que[doctor_index].empty() == false )
{
printf("%dn", que[doctor_index].top().index);
que[doctor_index].pop();
}
else
printf("EMPTYn");
}
}
}
return
0;
}

最后

以上就是秀丽太阳为你收集整理的ACM-Hdu-看病要排队(STL优先队列)的全部内容,希望文章能够帮你解决ACM-Hdu-看病要排队(STL优先队列)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部