Problem4904--聪明的木匠

4904: 聪明的木匠

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

最近,一位老木匠遇到了一件非常棘手的问题。他需要将一根非常长的木棒切成 $N$ 段。每段的长度分别为 $L_1,L_2,…,L_N\ (1≤L_1,L_2,…,L_N≤1,000)$,且均为整数个长度单位。 $\sum L_i\ (i=1,2,…,N)$ 恰好就是原木棒的长度。
我们认为切割时仅在整数点处切且没有木材损失。
木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为 $1$ 的木棒花费 $1$ 单位体力。
例如,若 $N=3, L_1 =3,L_2 =4,L_3 =5$,则木棒原长为 $12$,木匠可以有多种切法,如:先将 $12$ 切成 $3+9$,花费 $12$ 体力,再将 $9$ 切成 $4+5$,花费 $9$ 体力,一共花费 $21$ 体力;还可以先将 $12$ 切成 $4+8$,花费 $12$ 体力,再将 $8$ 切成 $3+5$,花费 $8$ 体力,一共花费 $20$ 体力。显然,后者比前者更省体力。
那么,木匠至少要花费多少体力才能完成切割任务呢?

Input

输入数据的第一行为一个整数 $N\ (2≤N≤150,000)$;
在接下来的 $N$ 行中,每行为一个整数 $L_i\ (1≤L_i≤1,000)$。

Output

输出数据仅有一行,为一个整数,表示木匠最少要花费的体力。测试数据保证这个整数不大于 $2^{31}-1$。

Sample 1 Input

4
3
5
7
11

Sample 1 Output

49

HINT

https://blog.csdn.net/enjoying_science/article/details/47175711

Source/Category

STL 3.5.priority_queue