哈夫曼编码 - 代码
https://ac.nowcoder.com/acm/problem/233601
#include <iostream> #include <queue> #include <vector> using namespace std; using ll = long long; int n; priority_queue<ll, vector<ll>, greater<ll>> heap; // 字符串的最短长度 即为 哈夫曼树的 带权路径长度。 // 也是最小的带权路径长度总和。 int main() { cin >> n; while(n--) { int x; cin >> x; heap.push(x); } ll ans = 0; while(heap.size() > 1) { ll x = heap.top(); heap.pop(); ll y = heap.top(); heap.pop(); ans += x + y; heap.push(x + y); } cout << ans << endl; return 0; }