將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種:
輸入格式:
每組測試第1行包含2個正整數n(<= 1000)和m(<= 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間[-10000, 10000]內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。
輸出格式:
對輸入的每個命題,如果其為真,則在一行中輸出「t」,否則輸出「f」。
分析:1、邊插入邊調整。
2、寫法問題,注意插入負數的符號處理。
3、堆是完全二叉樹,先插入到最後,再向上調整。
#includeusing namespace std;const int maxn = 1000 + 10;
vectorv;
mapmp;
int a[maxn];
int change(string s)
if(st == 1) return -sum;
return sum;
}int main()
else break;}}
for(int i = 1; i <= cnt; ++i)
getchar();
string s;
while(m--)
int sum1 = change(v[0]);
if(id == 1)
else if(id == 2)
else if(id == 3)
else
}return 0;
}
(最小堆)L2 012 關於堆的判斷
l2 012 關於堆的判斷 25 分 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 以及需要判斷的命題數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。對輸入的每個命題...
L2 012 關於堆的判斷
題目如下 時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 輸入格式 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元...
L2 012 關於堆的判斷
題目 1.按題目要求先將傳進來的數按順序插入,每插入乙個新的元素就要從下向上調整,邊插入邊調整,不能全部插入後再從上到下調整。2.得到調整好的堆後,對輸入的指令字串進行分析,取出其中的數字,並判斷是題目所給的四類命題的哪一類 在這裡我採用按空格分幾個部分輸入字串的形式獲取字串中的數字 例如輸入 24...