做题地址: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;
}