内容:
priority_quene是一个优先队列,优先级别高的先入队,默认最大值优先
因此出队和入队的时间复杂度均为O(logn),也可以自定义优先级
头文件<quene>
函数:
构建优先队列
priority_queue<int, vector<int>, cmp>que;//cmp是代表优先级priority_queue<int>que1;//默认最大堆
如何定义优先级,可以使用c++的库函数
一般是最多的是如下操作
priority_queue<int, vector<int>, less<int>>que; 最大堆priority_queue<int, vector<int>, greater<int>>que; 最小堆
第二种为自定义优先级
优先队列的妙用
这是b站上的一道题,我觉的普通做法也可以完成
#include <iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
#include<queue>
#include "first1.h"
int main() {priority_queue<int, vector<int>, less<int>>que;priority_queue<int,vector<int>,greater<int>>que1;int a, b, n,q;cin >> a >> b >> n;int sum = 0;for (int i = 0; i < n; i++) {cin >> q;sum += q;if (que.size() > a) {que.pop();}if (que1.size() > b) {que1.pop();}}while (!que.empty()) {sum -= que.top();que.pop();}while (!que1.empty()) {sum -= que1.top();que.pop();}cout << sum;
}
大致写了一下这道题不是很典型,我没算平均数,你可以直接排个序,去计算也是可以的