做题地址:https://www.luogu.com.cn/problem/P1090
这一题是贪心问题,我们只需要每次拿出两个最小的水果堆来合并就好了
这里使用STL容器里的小根堆来做此题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int n;
priority_queue<int, vector<int>, greater<int>> q;
int main(){
cin >> n;
while (n -- ){
int x; cin >> x;
q.push(x);
}
int res = 0;
while (q.size() > 1){
int x = q.top(); q.pop();
int y = q.top(); q.pop();
res += x + y;
q.push(x + y);
}
cout << res << endl;
return 0;
}