题解 | 哈夫曼树
#include<iostream> #include<queue> #include<cstdio> using namespace std; priority_queue<int, vector<int>, greater<int>> myqueue;// 小顶堆 int main() { int n; while (cin >> n) { int temp; int answer = 0; for (int i = 0; i < n; i ++) { cin >> temp; myqueue.push(temp); } while (myqueue.size() > 1) { int a = myqueue.top(); myqueue.pop(); int b = myqueue.top(); myqueue.pop(); answer = answer + a + b; myqueue.push(a + b); } cout << answer << endl; } }