PTA L2 012 關於堆的判斷 25分

2021-10-10 21:34:09 字數 1063 閱讀 7333

傳送門

這道題關於堆的問題。

小頂堆:根節點小於或等於所有左右子結點

大頂堆:根節點大於或等於所有左右子結點

這道題構造乙個小頂堆。

每讀入乙個數字就把它加進堆裡面。

然後進行堆的調整。比較左右子結點與根節點的大小。進行調整。

把堆建好了,我們需要記錄結點和結點所在的位置。用map來記錄即可。

讓結點作為map的first,位置作為second.

然後就是判斷部分了。

有結論:

堆在連續陣列的儲存中,任意乙個結點的父結點是位置/2;

我們可以用上面的結論進而判斷。

**部分:

#include

#define mst(a, n) memset(a, n, sizeof(a))

using

namespace std;

const

int n =

1e3+10;

const

int m =55;

const

int inf =

1e6+10;

typedef

long

long ll;

int n, m;

int a[n]

;int cnt;

map<

int,

int> mp;

void

ins(

int x)

}int

main()

for(

int i =

1; i <= n; i++

)int x1, x2;

string s;

while

(m--

)else

}else

else

}else

if(s[0]

=='p'

)else

}else

if(s[0]

=='c'

)else}}

}return0;

}

L2 012 關於堆的判斷

題目如下 時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 輸入格式 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元...

L2 012 關於堆的判斷

題目 1.按題目要求先將傳進來的數按順序插入,每插入乙個新的元素就要從下向上調整,邊插入邊調整,不能全部插入後再從上到下調整。2.得到調整好的堆後,對輸入的指令字串進行分析,取出其中的數字,並判斷是題目所給的四類命題的哪一類 在這裡我採用按空格分幾個部分輸入字串的形式獲取字串中的數字 例如輸入 24...

L2 012 關於堆的判斷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 輸入格式 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 ...