優先佇列的簡單應用

2022-05-02 20:45:14 字數 1017 閱讀 1701

priority_queue是種一種功能強大的佇列,本質是乙個堆

1. 標頭檔案是#include(實際編譯過程中要加上#include )

2. 關於priority_queue中元素的比較

模板申明帶3個引數:priority_queue

其中type 為資料型別,container為儲存資料的容器(stl裡面預設用的是vector),functional 為元素比較方式。

比較方式預設用operator<,所以如果把後面2個引數預設的話,優先佇列就是大頂堆(降序),隊頭元素最大。

//

下面兩種優先佇列的定義是等價的

priority_queue q;//

預設的優先佇列

priority_queue,less >q;

//注意最後兩個「>」符號不要連在一起,否則會被很多(但不是所有)編譯器誤認為是『>>』運算子

如果想讓優先佇列總是把最小的元素放在隊首,只需進行如下的定義:

priority_queue,greater >q;

less 表示數字大的優先順序高,而 greater 表示數字小的優先順序高

—————————————————————————————————————————

附:

平時如果用從大到小不用後面的vector,less,可能到時候要改成從小到大,你反而會搞忘怎麼寫greater,反而得不償失

佇列的基本操作:

q.size();//

返回q裡元素個數

q.empty()//

如果隊列為空返回true,否則返回false

q.push(k);//

在q的末尾插入k

q.pop();//

刪掉q的第乙個元素

q.top();//

返回q的第乙個元素

後續又新的需求再深入

優先佇列的應用

思路分析 駕駛一輛卡車行駛l單位距離。最開始時,卡車上有p單位的汽油。卡車每開1單位距離需要消耗1單位的汽油。如果在途中車上的汽油耗盡,卡車就無法繼續前行,因而無法到達終點。在途中一共有n個加油站。第i個加油站在距離起點ai單位距離的地方,最多可以給卡車加油bi單位汽油。假設卡車的燃料箱的容量無限大...

優先佇列的應用

1.基本概念 2.關於優先佇列的優先順序 自部落格 priority queue,less 大的優先順序大 priority queuevector,greater 小的優先順序大 當然優先順序也可以自己寫比較函式自己定義 struct cmp1 struct cmp2 priority queue...

Add All uva優先佇列的應用

題目的解法屬於貪心,因為cost a1 a2,所以要保證每次的cost最小,所以說,每次將佇列中最小的兩個相加,得出來的數放入佇列中,再取2個最小的相加,直到全部加完,所以這就涉及了乙個取2個最小數的問題,我說一下我一開始的做法 include include includeusing namesp...