Bailian4078 实现堆结构模拟+优先队列
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian4078 实现堆结构模拟+优先队列相关的知识,希望对你有一定的参考价值。
总时间限制: 3000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB
描述
定义一个数组,初始化为空。在数组上执行两种操作:
1、增添1个元素,把1个新的元素放入数组。
2、输出并删除数组中最小的数。
使用堆结构实现上述功能的高效算法。
输入
第一行输入一个整数n,代表操作的次数。
每次操作首先输入一个整数type。
当type=1,增添操作,接着输入一个整数u,代表要插入的元素。
当type=2,输出删除操作,输出并删除数组中最小的元素。
1<=n<=100000。
输出
每次删除操作输出被删除的数字。
样例输入
4
1 5
1 1
1 7
2
样例输出
1
提示
每组测试数据的复杂度为O(nlogn)的算法才能通过本次,否则会返回TLE(超时)
需要使用最小堆结构来实现本题的算法
问题链接:Bailian4078 实现堆结构
问题简述:(略)
问题分析:模拟题,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)
AC的C++语言程序如下:
/* Bailian4078 实现堆结构 */
#include <bits/stdc++.h>
using namespace std;
struct Node
int w;
Node(int a) w = a;
bool operator < (const Node &a) const return w > a.w;
;
int main()
int n, type, a;
priority_queue<Node> q;
scanf("%d", &n);
while (n--)
scanf("%d", &type);
if (type == 1)
scanf("%d", &a);
q.push(Node(a));
else /* type = 2 */
a = q.top().w;
q.pop();
printf("%d\\n", a);
return 0;
与50位技术专家面对面
20年技术见证,附赠技术全景图
以上是关于Bailian4078 实现堆结构模拟+优先队列的主要内容,如果未能解决你的问题,请参考以下文章