L2 012 關於堆的判斷

2021-08-10 19:12:59 字數 1498 閱讀 4500

今天看專案partner在操練這道天梯賽的題目,他是用stl做的,我之前都不知道stl_heap這個東西,學習了一下受益匪淺。將這道曾經做過,但是是copy書上**還扣了1份的題重新找出來認真做了一遍。現在ac了發blog上來分享一下

「x is the root」:x是根結點;

「x and y are siblings」:x和y是兄弟結點;

「x is the parent of y」:x是y的父結點;

「x is a child of y」:x是y的乙個子結點。

每組測試第1行包含2個正整數n(<= 1000)和m(<= 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。

對輸入的每個命題,如果其為真,則在一行中輸出「t」,否則輸出「f」。

5 446 23 26 24 10

24 is the root

26 and 23 are siblings

46 is the parent of 23

23 is a child of 10ft

ft

/*

name:l2-012. 關於堆的判斷

author: spencercjh

date:2023年11月14日16:01:27

description:gplt團體程式設計天梯賽-練習集

reference:stl_heap:

key word:stl_vector,stl_heap

*/#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

for(

int i=

0; i)else

}else

else

}else

if(cmd[0]

=='p'

)else

}else

if(cmd[0]

=='c'

)else}}

}}

reference:

make_heap(iterator,iterator,cmp);(好把這不是原始碼這是我自己編的),使用這個方法能將乙個普通的vector變成乙個小/大根堆,讓這個vector和你學堆heap的時候那個陣列一樣,這樣就懂了吧?關於兒子父親的那些判斷,什麼left child=2i+1,right child=2i+2,father=i/2等等操作都是一樣的。

本來c風格的先建堆,再實現邏輯的一套**要100多行,現在50幾行,嘻嘻***,美滋滋。

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 分別是插入元素的個數 ...