傳送門
這道題關於堆的問題。
小頂堆:根節點小於或等於所有左右子結點
大頂堆:根節點大於或等於所有左右子結點
這道題構造乙個小頂堆。
每讀入乙個數字就把它加進堆裡面。
然後進行堆的調整。比較左右子結點與根節點的大小。進行調整。
把堆建好了,我們需要記錄結點和結點所在的位置。用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 分別是插入元素的個數 ...