pta-Windows消息队列

这篇博客介绍了如何使用C++的优先队列(priority_queue)来处理PUT和GET操作。重点在于自定义比较函数并优化性能,通过`ios_base::sync_with_stdio(false)`避免超时。代码中展示了如何读取输入,将任务添加到队列,并根据GET指令正确地从队列中取出并打印最优先的任务。
摘要由CSDN通过智能技术生成

原题链接:
https://pintia.cn/problem-sets/15/problems/841
原题AC代码:

#include<iostream>
#include<queue>
using namespace std;
typedef struct ORDER {
	string nm;
	int ji;
	bool operator <(const struct ORDER& a)const {
	//上面这行最后的const关键字需要加进去,否则会编译错误。
		return ji > a.ji;
	}
}order;
int main() {
	int n;
	//下面这行必须要写,若不加会超时。
	ios_base::sync_with_stdio(false);
	cin >> n;
	string s;
	priority_queue<order> p;
	for (int i = 0; i < n; i++) {
		cin >> s;
		if (s == "PUT") {
			order tmp;
			cin >> tmp.nm >> tmp.ji;
			p.push(tmp);
		}
		else {
			if (s == "GET") {
				if (p.size() == 0) {
					cout << "EMPTY QUEUE!" << endl;
				}
				else {
					order tmp = p.top();
					p.pop();
					cout << tmp.nm << endl;
				}
			}
		}
	}
	return 0;
}

思路:就是利用优先队列的特性完成这一题。
需要注意的地方:
1.优先队列自定义类型的<函数需要重新定义,需要加入const关键字。
2.由于这一题给出的限制时间的要求很严格,只有150ms,所以我们必须加入下面这行代码。

ios_base::sync_with_stdio(false);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值