#66. 石子合并I
石子合并I
Description
设有n堆石子排成一排,其编号为1,2,3,…,n。每堆石子有一定的数量,例如: 13 7 8 16 21 4 18 现要将n堆石子归并为一堆。归并的过程为每次只能将相邻的两堆石子堆成一堆,这样经过n-1次归并之后最后成为一堆。对于上面的7堆石子,可以有多种方法归并成一堆。归并的代价是这样定义的:将两堆石子归并为一堆时,两堆石子数量的和称为归并2堆石子的代价。如上图中,将13和7归并为一堆的代价为20。归并的总代价指的是将沙子全部归并为一堆沙子的代价的和。如上面的2种归并方法中, 第1种的总代价为 20+24+25+44+69+87 = 267 第2种的总代价为 15+37+22+28+59+87 = 248 由此可见,不同归并过程得到的总的归并代价是不一样的。 当n堆石子的数量给出后,找出一种合理的归并方法,使总的归并代价为最小。
Format
Input
第1行:1个整数n(1<=n<=100),表示石子的数量第
2行:n个用空格分开的整数,每个整数均小于10000,表示各堆石子的数量。
Output
第1行:1个整数,表示最小的归并代价
第2行:用括号表示的归并顺序。加括号的要求见样例。如果只有1堆石子,输出时不要加括号。
Samples
3
13 7 8
43
(13)((7)(8))
Limitation
1s, 1024KiB for each test case.
相关
在以下作业中: