1.优先队列解决:

优先队列:

头文件和定义:

#include<queue>
template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type> > class priority_queue;

可表达为以下形式:

priority_queue<Type, Container, Functional>
  • type:即数据的类型
  • Container:即所选容器,默认为vector<int>
  • Functional:即比较方式,默认为大根堆实现

2.所谓的优先队列,可以理解为堆的一种实现,而其提供的成员函数可以更好的对堆这种数据结构进行操作

3.优先队列的成员函数简介:

  • push: void push(const T& value) - 向队列中插入一个元素。
  • pop: void pop() - 移除队列顶部的元素。
  • top: const T& top() const - 获取队列顶部的元素,即具有最高优先级的元素。
  • empty: bool empty() const - 判断队列是否为空。
  • size: size_type size() const - 返回队列中元素的数量。

下面是优先队列的题解代码:



#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int target = 0;

priority_queue<int, vector<int>, greater<int> >q;

int main(void) {
    int n = 0;
    cin >> n;
    while (n--) {
        int index = 0;
        cin >> index;
        switch (index) {
        case 1:
            cin >> target;
            q.push(target);
            break;
        case 2:
            cout << q.top()<<endl;
            break;
        case 3:
            q.pop();
            break;
        }
    }
    return 0;
}