priority_queue

来源:互联网 发布:百度云mac怎么用 编辑:程序博客网 时间:2024/06/08 07:07


优先级队列:是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

一、优先级队列的使用方法

1、头文件是#include<queue>

2、定义:priority_queue<int>  q;

3、包含的方法:

二、重点介绍priority_queue<pair<int,int> >pq;(pq是优先级队列的名称)

其中的pair表示先按照第一个元素降序,第一个元素相等时按照第二个元素降序。

使用方法实例:

#include<bits/stdc++.h>using namespace std;priority_queue<pair<int,int> >pq;int ans[300100];int main(){    int n,k,temp;    cin>>n>>k;    long long ANS=0;    for(int i=1; i<=n+k; i++)    {        if(i<=n)cin>>temp,pq.push({temp,i});        if(i>k)ans[pq.top().second]=i,ANS+=(long long)pq.top().first*(i-pq.top().second),pq.pop();    }    cout<<ANS<<endl;    for(int i=1; i<=n; i++)cout<<ans[i]<<' ';    return 0;}

上述代码对应的题目:http://codeforces.com/problemset/problem/853/A

参考链接 :http://www.cnblogs.com/Deribs4/p/5657746.html

http://www.cplusplus.com/reference/queue/priority_queue/