1 条题解
-
0
#include <bits/stdc++.h> #define int long long using namespace std; int n; int a[30000]; priority_queue<int> q; signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; // work for (int i = 1; i <= n; i++) q.push(-a[i]); // 通过传相反数,实现最小值模式的优先队列 int ans = 0; // 消耗的总体力 while (q.size() != 1) { // 取出来当前大小最小的两堆果子 int x = -q.top(); q.pop(); int y = -q.top(); q.pop(); // 计算体力消耗 ans += (x + y); // 把合并好的一堆果子放回队列 q.push(-(x + y)); } cout << ans << "\n"; return 0; }
- 1
信息
- ID
- 588
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 77
- 已通过
- 29
- 上传者