[wikioi 1307][poj 2054]欧少堆(乱搞)

题目:http://www.wikioi.com/problem/1307/

题意:给你一个树,上面有n个节点,每个节点都有一个价值p,求一个n个节点的排列顺序,是的Σi*p[i]最小(要求父节点一定要在子节点的前面)

分析:

首先如果没有父节点和子节点,那么这题就是一道弱弱的排序题,根据排序不等式,策略就是p越大的就放越前面

虽然此题有了这样的限制,但是肯定也希望P越大的在前面越好,那么对于一个点它能放的最大的在哪里呢?当然是紧接在它父节点的位置后面!!!!

于是我们可以先把每个点的权值加入优先队列中去,从中找出一个最大的权值点,将其与父节点合并成一个新节点,那么关键是这个节点的权值怎么处理呢?取平均值!

http://www.cnblogs.com/rainydays/archive/2013/08/20/3271277.html

这里引用神犇的博客……

然后就很简单的用堆维护就行了……

posted @ 2014-07-15 22:58  Chellyutaha  阅读(171)  评论(0编辑  收藏  举报