修篱笆

试题描述
  农夫约翰为了修理栅栏,要将一块很长的木板切割成N块。准备切成的木板长度为L1,L2,L3……LN,未切割前木板的长度恰好为切割后木板长度的总和。每次切断木板时,需要的开销为这块木板的长度。请求出按照目标要求将木板切割完的最小开销是多少?例如长度为21的木板切割成长度为13和8,开销为21;把长度为13的木板切割成5和8,则开销为13,所以将长度为21的木板切割成8,5,8的三块,开销是34.
输入
第一行仅一个正整数N,第二行有N个正整数,两两之间用一个空格分隔。
输出
符合题目要求的一个正整数
输入示例
3
8 5 8
输出示例
34
其他说明
数据范围:N<=100000,Li<=10000 。

如果将它看成一个二叉树,那么要想花销最少,就得让二叉树的层数尽量少。第一种方法可以用优先队列实现,第二种可以通过建树实现。

原文地址:https://www.cnblogs.com/Kane-Zedak/p/4963923.html