HDU 3282 優先佇列的使用

2022-06-26 09:36:15 字數 844 閱讀 3947

題意:

按照順序給你n個數,當數的數量是奇數的時候就輸出它們的中位數

題解:優先佇列預設是大頂堆,即priority_queue.top()是這個佇列中的最大值

那麼我們就可以先創造乙個大頂堆優先佇列qmax,和乙個小頂堆qmin

qmin裡面放的是大於等於中位數的數,qmax裡面放的是比中位數小的數

因為qmin是小頂堆,那麼qmin.top()肯定就是中位數

(上面的話是在中位數的前提下)

**:

1 #include 2

using

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...