pku3253 Fence Repair

 利用构建赫夫曼树的贪心思想来维护一个小顶堆

 

#include <iostream> #include <queue> using namespace std; int N; int woods[20001]; int main() { int i, j; while (cin >> N) { for (i=0; i<N; i++) cin >> woods[i]; priority_queue<int, vector<int>, greater<int> > q(woods, woods+N); unsigned int sum = 0; while (q.size() >= 2) { i = q.top(); q.pop(); j = q.top(); q.pop(); sum += i+j; q.push(i+j); } q.pop(); cout << sum << endl; } }

你可能感兴趣的:(pku3253 Fence Repair)