文章
4
粉丝
0
获赞
13
访问
433
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// 使用最小堆(优先队列)
priority_queue<int, vector<int>, greater<int>> pq;
// 读取数据并加入优先队列
for (int i = 0; i < n; i++) {
int x;
cin >> x;
pq.push(x);
}
long long total = 0; // 使用 long long 防止溢出
// 当队列中还有多于一堆果子时
while (pq.size() > 1) {
// 取出最小的两堆,取出后进行出队
int a = pq.top(); pq.pop();
int b = pq.top(); pq.pop();
// 合并两堆,记录体力耗费
int sum = a + b;
total += s...
登录后发布评论
暂无评论,来抢沙发