1. 程式人生 > >Huffman樹_CH1701_合併果子

Huffman樹_CH1701_合併果子

思路分析:

    顯然, 直接應用Huffman演算法即可, AC程式碼如下:

//CH1701_合併果子
#include <cstdio>
#include <queue>
using namespace std;
int main(){
	int n; scanf("%d", &n);
	priority_queue<int> pq;
	for(int i = 1, t; i <= n; ++i) scanf("%d", &t), pq.push(-t);
	int res = 0;
	while(pq.size() > 1){
		int a = -pq.top(); pq.pop(); int b = -pq.top(); pq.pop();
		res += a + b, pq.push(-(a + b));
	}
	printf("%d\n", res);
	return 0;
}