洛谷P1090 合并果子

https://www.luogu.org/problem/P1090

 

#include<bits/stdc++.h>
using namespace std;
int n,b,j;
priority_queue<int>s; //定义队列
int main() {
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>b;
        s.push(-b);//因为优先队列自动排序后,是从大到小的,所以*-1后再压入队列,也就符合需求 最后再*-1
    }
    for(int i=1; i<n; i++) { //循环n-1次
        b=s.top();//弹出最小值
        s.pop();//删除最小值
        b+=s.top();//弹出第二小值
        s.pop();//删除第二小值
        s.push(b);//重新压入队列
        j+=b;//计数
    }
    cout<<j*-1;//输出-1*计数器
    return 0;//结束代码
}

 

posted @ 2019-10-20 16:00  晴屿  阅读(75)  评论(0编辑  收藏  举报