#include <iostream> #include <queue> using namespace std; typedef long long ll ; int main() { int n; cin >> n; priority_queue<ll, vector<ll> , greater<ll> > q; for(int i = 0;i < n;i ++){ ll x; cin >> x; q.push(x); } ll sum = 0; while(q.size() > 1){ ll t1 = q.top(); q.pop(); ll t2 = q.top(); q.pop(); ll t = t1 + t2; q.push(t); sum += t; } cout << sum; } // 64 位输出请用 printf("%lld") //贪心算法(Greedy Algorithm): //哈夫曼编码的构建过程是一个典型的贪心算法应用。每次选择当前频率最小的两个节点合并,直到只剩一个节点。 //优先队列(Priority Queue)或最小堆(Min-Heap): //高效实现哈夫曼编码的关键是使用优先队列(通常是最小堆)来动态获取当前频率最小的两个节点。 //需要熟悉优先队列的操作(如插入、提取最小值等)及其时间复杂度。