POJ-數據結構-優先隊列模板

優先隊列模板ios

優先隊列是用堆實現的,因此優先隊列中的push()、pop()操做的時間複雜度都是O(nlogn)。數據結構

優先隊列的初始化須要三個參數,元素類型、容器類型、比較算子。less

須要熟悉的優先隊列操做:spa

  1. q.top() 訪問堆頂
  2. q.push() 入堆
  3. q.pop() 出堆
  4. 不一樣類型元素的優先級設置
  5. 定義堆須要注意最後兩個> >之間有一個空格

數據結構code

priority_queue < int, vector<int>, less<int> > q; // 大頂堆——堆頂爲大數
priority_queue < int, vector<int>, greater<int> > q; // 小頂堆——堆頂爲小數

例-百練4078:實現堆結構blog

AC代碼隊列

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>

using namespace std;

int main()
{
    priority_queue < int, vector<int>, greater<int> >q;
    int m, t, x, top;
    cin >> m;
    while (m--)
    {
        cin >> t;
        if (t == 1)
        {
            cin >> x;
            q.push(x);
        }
        if (t == 2)
        {
            top = q.top();
            cout << top << endl;
            q.pop();
        }
    }
    return 0;
}
相關文章
相關標籤/搜索