[問題] priority_queue與min-heap
問題(Question):
題目輸入有三種指令
PUSH k //把k加到heap
POP //刪除heap中的最小值
TOP //輸出heap中的最小值
我直接使用
priority_queue<int, vector<int>, greater<int>>
可以AC
但是如過我仍然使用
priority_queue<int>,
也就是max heap
然後在push資料時push -k進去,
pop時再列印出負值,
邏輯上應該也可以達到min-heap的效果,
但是有兩筆測資一直過不了,
就算換成long long也是一樣,
想請問是哪裡有bug,謝謝大家!
這是這題的oj網址
https://acm.cs.nthu.edu.tw/problem/12316/
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
這是有兩筆測資過不了的程式碼
http://codepad.org/VvfpJVDk
#include <iostream>
#include <queue>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
priority_queue<long long> q;
string cmd;
long long num;
while (cin >> cmd) {
if (cmd == "PUSH") {
cin >> num;
q.push(-num);
}
else if (cmd == "POP" && !q.empty()) {
q.pop();
}
else if (cmd == "TOP"){
if (q.empty()) {
cout << "Null" << endl;
}
else {
cout << -q.top() << endl;
}
}
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.222.158 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1559739424.A.53D.html
推
06/05 21:33,
6年前
, 1F
06/05 21:33, 1F
推
06/05 22:28,
6年前
, 2F
06/05 22:28, 2F
推
06/05 23:04,
6年前
, 3F
06/05 23:04, 3F
→
06/06 00:14,
6年前
, 4F
06/06 00:14, 4F
→
06/06 00:14,
6年前
, 5F
06/06 00:14, 5F
→
06/06 01:43,
6年前
, 6F
06/06 01:43, 6F
→
06/06 07:47,
6年前
, 7F
06/06 07:47, 7F
推
06/06 12:37,
6年前
, 8F
06/06 12:37, 8F
→
06/06 15:23,
6年前
, 9F
06/06 15:23, 9F
推
06/06 23:09,
6年前
, 10F
06/06 23:09, 10F
→
06/06 23:09,
6年前
, 11F
06/06 23:09, 11F
→
06/06 23:10,
6年前
, 12F
06/06 23:10, 12F
推
06/07 01:30,
6年前
, 13F
06/07 01:30, 13F
→
06/07 01:33,
6年前
, 14F
06/07 01:33, 14F
推
06/07 02:10,
6年前
, 15F
06/07 02:10, 15F
→
06/07 08:35,
6年前
, 16F
06/07 08:35, 16F
→
06/07 17:59,
6年前
, 17F
06/07 17:59, 17F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
33
68