码迷,mamicode.com
首页 > 其他好文 > 详细

STL优先队列

时间:2019-03-04 13:08:38      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:cpp   names   ++   合并   main   priority   pac   cto   algo   

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;

priority_queue<ll, vector<ll>, greater<ll> > a;
                                    //greater<ll>表示从大到小排序,形成小根堆
                                    //less<ll>表示从小到大排序,形成大根堆
int main(){
    long long ans=0, n, t;
    scanf("%lld", &n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld", &t);
        a.push(t);
    }
    for(int i=1; i<n; i++){
        int c,d;
        c=a.top();
        a.pop();
        d=a.top();
        a.pop();                    //每次取最小的两个数
        ans+=c+d;                   
        a.push(c+d);
    }                               //本题几乎等同于“合并果子” 
    printf("%lld",ans);
    return 0;
}

STL优先队列

标签:cpp   names   ++   合并   main   priority   pac   cto   algo   

原文地址:https://www.cnblogs.com/lfyzoi/p/10469918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!