内容:
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;
}
大致写了一下这道题不是很典型,我没算平均数,你可以直接排个序,去计算也是可以的