時間限制
400 ms
記憶體限制
65536 kb
**長度限制
8000 b
判題程式
standard
作者 陳越
將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種:
輸入格式:
每組測試第1行包含2個正整數n(<= 1000)和m(<= 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。
輸出格式:
對輸入的每個命題,如果其為真,則在一行中輸出「t」,否則輸出「f」。
輸入樣例:
5 4輸出樣例:46 23 26 24 10
24 is the root
26 and 23 are siblings
46 is the parent of 23
23 is a child of 10
ftft
// 注意邊輸入資料邊構建堆!!! stl庫里有現成的make_heap,也可以自己寫
// 接下來就是4個判斷
#include #include #include #include #include using namespace std;
void adjustheap(vector& h,int root_index, int heap_length)
else
}if (left_child_index <= heap_length - 1 && right_child_index > heap_length - 1)
if (min_index != root_index)
return;
}void make_heap(vector& h, int heap_length)
class greater_class
};int main()
getchar();
for (int i = 0; i < m; i++)
if (str.find("siblings", 0) != string::npos && sscanf(str.c_str(), "%d and %d are siblings", &x, &y) == 2)
if (str.find("parent", 0) != string::npos && sscanf(str.c_str(), "%d is the parent of %d", &x, &y) == 2)
if (str.find("child", 0) != string::npos && sscanf(str.c_str(), "%d is a child of %d", &x, &y) == 2)
}return 0;
}
L2 012 關於堆的判斷(小頂堆)
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 輸入格式 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 ...
L2 012 關於堆的判斷 小頂堆(詳解)
將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 以及需要判斷的命題數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個...
L2 012 關於堆的判斷 25分 小頂堆
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 分別是插入元素的個數 ...