POJ 3253 fence repair 贪心法 huffman

来源:互联网 发布:网络教育怎么报名啊 编辑:程序博客网 时间:2024/05/17 03:34
要求最小的开销,意思就是最小的木块要放在最后切,这样最小的木块就会经历最多次数的累加。

而最小的木块 一定还伴随着另一块木块,同理它应该也是次小的木块。

所以就要每次找出最小的和次小的木块,将其加和,再将和累积到开销变量ans上。

如果每合成一次木块就要排序一次的话会有点耗时,而且每次合成完之后分别用来代表最小和次小木块的下标的mii1,mii2就已经废弃不用了,这时可以把他们的和K赋值给mii1,再把最后一个元素a[n-1]的值赋给a[mii2],在n-=1也就是数组缩小一个单位。(如若mii1==n-1那么就将mii1和mii2交换)随后再遍历数组比较得出最小与次小值即可。


值得一说- -这道题提交了好多次都是wrong answer又检查了好久算法也没有发现错漏,最后竟然发现是输出长度不够,必须要改成__int64 的声明和“%I64d”的输出




0 0
原创粉丝点击