4078 實現堆結構

2021-08-07 10:54:21 字數 765 閱讀 9441

總時間限制: 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(超時)

需要使用最小堆結構來實現本題的演算法

#include 

#include

#include

#include

using

namespace

std;

////要背過最小堆的實現

int n,t,u;

priority_queue,greater >q;

int main(int argc, char** argv)

if(t==2)

1 實現堆結構

總時間限制 3000ms 記憶體限制 65535kb 描述 定義乙個陣列,初始化為空。在陣列上執行兩種操作 1 增添1個元素,把1個新的元素放入陣列。2 輸出並刪除陣列中最小的數。使用堆結構實現上述功能的高效演算法。輸入第一行輸入乙個整數t,代表測試資料的組數。對於每組測試資料,第一行輸入乙個整數n...

C 堆結構 陣列實現

要說最大堆和最小堆,就得先知道最大樹和最小樹。每個結點的值都大於 小於 或等於其子節點 如果有的話 值的樹,就叫最大 最小 樹。最大堆 最小堆 是最大 最小 完全樹。由於堆是完全二叉樹,所以可以用公式化描述,用一維陣列來有效的描述堆結構。利用二叉樹的性質 如果對一棵有n個結點的完全二叉樹的結點按層序...

C 堆結構 陣列實現

要說最大堆和最小堆,就得先知道最大樹和最小樹。每個結點的值都大於 小於 或等於其子節點 如果有的話 值的樹,就叫最大 最小 樹。最大堆 最小堆 是最大 最小 完全樹。由於堆是完全二叉樹,所以可以用公式化描述,用一維陣列來有效的描述堆結構。利用二叉樹的性質 如果對一棵有n個結點的完全二叉樹的結點按層序...