優先佇列。。剛開始用蠢辦法,經過乙個vector容器中轉,這麼一來一回這麼多趟,肯定超時啊。
超時**如下:
#include #includeview code#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define n 30003priority_queue
,greater >que;
inta[n];
vector
tmp;
intmain()
th++;
for(h=1;h)
printf(
"%d\n
",que.top());
for(h=0;h)
que.push(tmp[h]);
tmp.clear();}}
return0;
}
後來看了網上某位大牛的,說是用兩個優先佇列,乙個從大到小的,乙個從小到大的,元素在這兩個中間中轉,可以大大縮短時間。
**:
#include #includeview code#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define n 30003priority_queue
,greater > stobig; //
從小到大排,先出小的
priority_queue,less > btosmall; //
從大到小排,先出大的
inta[n];
intmain()
printf(
"%d\n
",stobig.top());
btosmall.push(stobig.top());
//還給它,保證語句1能夠成立
stobig.pop();}}
return0;
}
POJ 1442 Black Box 優先佇列
poj 1442 可以當做是優先佇列的模板 poj 1442 題意 給定m個數,每次可以插入序列乙個數 再給n個數,表示在插入第幾個數時輸出乙個數,第一次輸出序列中最小的,第二次輸出序列中第二小的 以此類推,直到輸出n個數。優先佇列的使用 本題思路是建立乙個小頂堆 和乙個大頂堆 儲存前 個小的數,且...
poj1442 優先佇列oye
歷經磨難終於解決了這題,原來用stl可以這麼簡單 這題的思路 用stl弄2個優先佇列,big佇列優先彈出最小的,small佇列優先彈出最大的,若要求第i小的數字,只要滿足small佇列裡有i個元素,且small佇列的top比big佇列的top小,則small的top就是第i小的數字。關於優先佇列記住...
POJ 1442 Treap 板子記錄
題意 給乙個序列,然後給出m個查詢,每次查詢輸入乙個數x,對於第i次查詢,輸出前x個數中第i大的關鍵字的值。解題方法 就是裸treap板子了,先介紹一下treap。treap是一棵二叉搜尋樹,只是每個節點多了乙個優先順序fix,對於每個節點,該節點的優先順序小於等於其所有孩子的優先順序。當然,引入優...