myj的补作业计划HrbustOJ新生赛(struct+优先队列)

Description

作为一个合格的大学牲,myj也常常被作业和各种报告所烦恼

这天myj有在准备赶作业,但是在他赶作业和报告的过程中,老师又不停的在布置新的作业和报告,所以myj决定将这些作业使用一个叫做优先级的东西来进行排序,将老师要求尽快完成的作业设置的优先级非常高,而那些可以拖的作业就尽量拖

myj一向奉行“摸鱼,划水,躺平”的学习方式,所以他只会在自己想做作业的时候才做,并且能够瞬间完成这个作业,而做过的作业就会从这个作业序列中移除

对于myj选择哪一份作业做,可以将这个过程做如下描述:myj先会找到优先级最高的作业做,如果存在多个优先级一样的作业,myj会先去完成一个最先被布置下来的作业

现在给你一些询问,要求你对于一些询问输出合适的答案
Input

第一行一个整数T,表示测试数据的组数

对于每组测试数据,第一行有一个整数n,表示下面出现的询问次数

接下来n行,每一行会先输入一个整数(只有1或者2)表示两种操作中的一种,如果是1,表示执行操作1,如果是2,表示执行操作2

操作1:包含一个字符串(无空格,长度小于20)和一个数字,分别表示作业的名字和优先级顺序

操作2:表示这是myj会按照上方的选择方式去选择一份作业完成,并且你需要输出myj完成的作业的名字

输入保证myj在想做作业的时候一定有作业可做

测试数据小于10组

每组数据n不大于100000

对于所有数据n的总和不大于550000

Output
每一行包含一个字符串,表示myj选择的作业
Sample Input

2
6
1 Math 5
1 English 6
1 C++ 0
2
2
2
10
1 a 11
2
1 b 456
1 c 7893
2
1 d 3
1 f 3
2
2
2

Sample Output

English
Math
C++

a

c

b

d

f

Hint

每输出一行都应该有一个换行符

行末没有多余空格

#include<bits/stdc++.h>
using namespace std;
struct node {
	string name;
	int pri;
	bool operator<(const node& that)const {
		return pri < that.pri;//优先队列中需要相反,即这次表示的是从d大到小进行排序;
	}
};
priority_queue<node>q;
queue<string>q2;
int main() {
	int T;
	cin >> T;
	while (T--) {
		int n;
		cin >> n;
		while (n--) {
			int t;
			cin >> t;
			if (t == 1) {
				//结构体放入优先队列中
				node work;
				string s;
				int num;
				cin >> s >> num;
				work.name = s;
				work.pri = num;
				q.push(work);
			}
			else {
				q2.push(q.top().name);
				q.pop();	
			}
		}
		while (!q2.empty()) {
			cout<<q2.front()<<endl;
			q2.pop();
		}
	}
}

 测试了多个样例都能通过,但是wrong answer,实在无法找出bug;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ou_fan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值