问题 1836 --聪明的木匠

1836: 聪明的木匠★★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 504  解决: 221
[提交][状态][命题人:]

题目描述

老木匠想做一张华丽木桌给女儿,为此他需要不同长度的木头,由于没有现成的木头,所以他需要从很长的木头树上切割才能得到他所想要长度的木头,但问题是切割需要耗费体力,每切割一个单位长度就要消耗等量的体力,年迈的老木匠由于身体的原因他必须要消耗最少的体力切割他想要的长度,他能做到是因为他凭着多年的经验,你也能做到吗?

输入

第一行是一个整数n0 < n< 20000),便是他想要的木头的个数,接下来的n行,每行有一个整数L(0 < L <50000),表示每个木头的长度。

输出

输出木匠切割所消耗的最小体力。

样例输入
Copy
3
8
5
8
样例输出
Copy
34

提示

不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费12体力,再将8切成3+5,花费8体力,一共花费20体力。显然,后者比前者更省体力。

来源

 

[提交][状态]