实现堆结构

实现堆结构/*实现堆结构查看提交统计提问总时间限制:3000ms内存限制:65535kB描述定义一个数组,初始化为空。在数组上执行两种操作:1、增添1个元素,把1个新的元素放入数组。2、输出并删除数组中最小的数。使用堆结构实现上述功能的高效算法。输入第一行输入一个整数t,代表测试数据的组数。对于每组测试数据,第一行输入一

大家好,欢迎来到IT知识分享网。实现堆结构"

/*
实现堆结构
查看 提交 统计 提问
总时间限制: 3000ms 内存限制: 65535kB
描述
定义一个数组,初始化为空。在数组上执行两种操作:

1、增添1个元素,把1个新的元素放入数组。

2、输出并删除数组中最小的数。

使用堆结构实现上述功能的高效算法。

输入
第一行输入一个整数t,代表测试数据的组数。
对于每组测试数据,第一行输入一个整数n,代表操作的次数。
每次操作首先输入一个整数type。
当type=1,增添操作,接着输入一个整数u,代表要插入的元素。
当type=2,输出删除操作,输出并删除数组中最小的元素。
1<=n<=100000。
输出
每次删除操作输出被删除的数字。
样例输入
2
5
1 1
1 2
1 3
2
2
4
1 5
1 1
1 7
2
样例输出
1
2
1
*/
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct cmp
{
	bool operator()(int a, int b)
	{
		return a > b;
	}
};
int main()
{
	int t,n,type,num;
	cin >> t;
	for (int i = 0; i < t; ++i)
	{
		cin >> n;
		priority_queue<int,vector<int>,cmp> pQueue;
		for (int j = 0; j < n; ++j)
		{
			cin >> type;
			if (type == 1)
			{
				cin >> num;
				pQueue.push(num);
			}
			else
			{
				cout << pQueue.top() << endl;
				pQueue.pop();
			}
		}
	}
	return 0;
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12331.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信