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;
}