#3278. 合并果子
合并果子
合并果子
题目描述
在一个果园里,多多已经将所有果子摘了下来,并且按照果子的不同种类分成了若干堆。
现在,多多要把所有果子合并成一堆。
每次合并时,多多可以选择任意两堆果子,将它们合并成一堆。此次合并消耗的体力,等于这两堆果子的重量之和。
经过 (n-1) 次合并后,所有果子会被合并成一堆。
多多合并果子时消耗的总体力,等于每次合并所消耗体力之和。
由于之后还需要把果子搬回家,因此多多希望采用一种合并顺序,使消耗的总体力尽可能小。
假设每个果子的重量均为 (1)。已知果子的种类数以及每种果子的数量,请计算将所有果子合并成一堆所需要的最小体力。
示例说明
假设有 (3) 堆果子,数量分别为:
1 2 9
可以先合并数量为 (1) 和 (2) 的两堆果子:
1 + 2 = 3
本次消耗体力为:
3
此时剩下两堆果子:
3 9
再将这两堆果子合并:
3 + 9 = 12
本次消耗体力为:
12
因此消耗的总体力为:
3 + 12 = 15
可以证明,(15) 是最小的体力消耗值。
输入格式
输入共两行。
第一行输入一个整数 (n),表示果子的种类数。
第二行输入 (n) 个整数 (a_1,a_2,\ldots,a_n),其中 (a_i) 表示第 (i) 种果子的数量。
输出格式
输出一个整数,表示将所有果子合并成一堆所需要的最小体力。
输入数据保证答案小于 (2^{31})。
数据范围
1 ≤ n ≤ 10000
1 ≤ ai ≤ 20000
对于不同规模的数据:
30% 的数据满足 n ≤ 1000
50% 的数据满足 n ≤ 5000
100% 的数据满足 n ≤ 10000
样例输入
3
1 2 9
样例输出
15