題意:
按照順序給你n個數,當數的數量是奇數的時候就輸出它們的中位數
題解:優先佇列預設是大頂堆,即priority_queue.top()是這個佇列中的最大值
那麼我們就可以先創造乙個大頂堆優先佇列qmax,和乙個小頂堆qmin
qmin裡面放的是大於等於中位數的數,qmax裡面放的是比中位數小的數
因為qmin是小頂堆,那麼qmin.top()肯定就是中位數
(上面的話是在中位數的前提下)
**:
1 #include 2using
namespace
std;
3int
main()427
while(qmin.size()!=qmax.size() && qmin.size()!=qmax.size()+1) //
這兩個條件任意乙個不滿足就要跳出來
2835
else
3641}42
/*43
經過上面的while處理後,qmin裡面放的是大於等於中位數的數,qmax裡面放的是比中位數小的數
44因為qmin是小頂堆,那麼qmin.top()肯定就是中位數
45(上面的話是在中位數的前提下)
46*/
47if(i&1
)48 cout <49if((i+1)%20==0||i==n)
50 cout <51else
if(i&1
)52 cout << "";
53}54}
55return0;
56 }
優先佇列的使用(附上HDU 1873
傳送門 這個題目是優先佇列結構體型別。優先佇列如果插入的結點是結構體型別,則要在結構體中過載比較操作符函式 有兩種過載方式 1.過載方法寫在結構體的外面,則函式的引數需要用引用 bool operator const node a,const node b 2.過載方法解除安裝結構體的裡面,則函式的...
hdu 4393 優先佇列)
思路 考慮si最大只有100,所以我們可以建立優先佇列陣列s 1.100 對於每個優先佇列,按第一關鍵字fi第二關鍵字id排序,每次取出所有的優先佇列裡最大值,然後直接 計算 time 1 si fi 找最大的way,將對應的優先佇列pop並輸出對應id即可。1 include2 include3 ...
hdu 4302 優先佇列
進一步學習了優先佇列的用法 題意 乙隻小動物在直線上走,起始位置為零,之後會出現食物,動物要去距離自己最短的食物那,若兩邊的食物距離相等,則選擇之前走的方向的食物 0 x,代表x的位置出現了食物,1代表去吃乙個食物 1 include2 include3 include4 include5 usin...