pat L2 012 關於堆的判斷(堆 輸入格式)

2021-09-12 02:44:41 字數 809 閱讀 9431

l2-012 關於堆的判斷

思路:就是建立乙個堆,然後找是否滿足4個條件就好了。

觀察可知,這四個條件都是對座標關係的判斷,接下來我用pos(x)表示x在堆中的位置。

(1)x是根節點 :如果pos(x)== 1;

(2)x和y是兄弟節點 :pos(x)/2 == pos(y)/2;

(3)x是y的父節點:pos(x)== pos(y)/2;

(4)x是y的兒子節點:pos(x)/2 == pos (y);

注意:只滿足以上條件還不行,

還要注意輸入的格式,由於數字是區間[−10000,10000]內的,所以直接用字串getline輸入

的話還要判斷負數,比較麻煩,

由於每一句話的單詞數量基本一致,所以可以採用輸入不同字串的方式來記錄資料。

(一開始錯誤就是沒考慮負數)

#include#include#include#include#includeusing namespace std;

const int maxn = 100100;

int h[maxn]=,len=0,t1,t2;

map mp;

void ins(int x)

int main(void)

for(i=1;i<=len;i++) mp[h[i]]=i;

char ss[120],ch,s1[120],s2[120];

getchar();

while(m--)elseelse

}}else

} return 0;

}

PAT L2 012 關於堆的判斷 資料結構

題目本身不難,就是字串處理有點繁瑣。但是有個巨坑!就是你必須得邊push邊造堆,不能一次性讀完再造堆,兩者造出來的順序是不一樣的!為此改了十多遍 累覺不愛 這裡用了stl的make heap,自己手寫也可以,不怎麼長。include include include include include i...

L2 012 關於堆的判斷(小頂堆)

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

L2 012 關於堆的判斷 插入建堆

堆函式 push heap a 1,a i 1 插入建堆函式,第三個引數可加 greater 小頂堆,預設大頂堆 push mack a 1,a n 1 用完整的資料建堆 注意的是,這題說的是已經有乙個堆,要插入。所以不能使用直接建堆的方法 建堆比較容易,字串有點點麻煩,仔細一點也可以的,字串有規律...