P1090 [NOIP 2004 提高组] 合并果子
P1090 [NOIP 2004 提高组] 合并果子 - 洛谷
#include <bits/stdc++.h>
using namespace std;
int main() {int n;cin >> n;priority_queue<int, vector<int>, greater<int>> pq; //小根堆for (int i = 1; i <= n; i++) {int x;cin >> x;pq.push(x);}int sum = 0;for (int i = 1; i < n; i++) { // 合并n-1次int a = pq.top();//记录此时的最小元素 pq.pop();//弹出最小元素 int b = pq.top(); pq.pop();//要在堆中取出最小的两个数 int temp = a + b;//合成一堆 sum += temp;pq.push(temp);//入堆 }cout << sum << endl;return 0;
}