堆结构实现代际 堆结构实现代际
发布时间
阅读量:
阅读量
4078:实现堆结构
整体运行时限制为3秒,在每个测试点的时间限制下限定为1秒,并规定内存占用不超过64MB。描述如下:
创建一个空数组,并针对该数组实施两类操作:
第一类操作:读取输入数据后填充至该数组中。
第二类操作:对这些数据进行排序处理。
1、增添1个元素,把1个新的元素放入数组。
2、输出并删除数组中最小的数。
使用堆结构实现上述功能的高效算法。
初始化一个整数n,并将其设为程序的操作次数上限。
程序将依次执行若干次操作指令。
每次指令由两个部分组成:
第一部分指示操作类型:
- 若type等于1,则执行增殖操作;
- 若type等于2,则执行去减殖操作。
增殖操作要求读取一个整数u作为待插入元素。
去减殖操作则负责从当前数组中取出当前最小的元素并进行删除。
需要注意的是,在所有情况下n的取值范围均为1至100000之间(包含两端)。
对于每一次去减殖操作都需要将被移除的数值记录下来。
测试案例提示指出:只有当所采用算法的时间复杂度不超过O(n log n)时才能保证程序在规定测试用例范围内运行良好,请确保算法的时间复杂度不超过O(n log n)。
建议采用基于最小堆的数据结构来实现本题的相关功能。
#include <iostream>
#include<algorithm>
#include<queue>
#
全部评论 (0)
还没有任何评论哟~
