#770. 合并石子(四边形优化+路径输出)
合并石子(四边形优化+路径输出)
说明
在一个操场上摆放着一排 $n$ 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将 $n$ 堆石子合并成一堆的最小得分。
输入格式
第一行是一个数 $n$。以下 $n$ 行每行一个数 $a$,其中第 $i$ 行表示第 $i-1$ 堆石子的数目。
$1\le n\le 1000,1\le a\le 200$。
输出格式
输出合并石子的方案。每次合并输出一行,第 $i$ 行表示第 $i$ 次合并是将原石子堆中的第 $i$ 堆到第 $j$ 堆合并为了一堆。
方案可能有多种,并且总会输出 $2\times n-2$ 个数。那么你需要保证:
* 输出的第 $1$ 个数最小。
* 满足上面的前提时,输出的第 $2$ 个数最小。
* 依此类推。
样例
4
1
1
1
1
1 2
3 4
1 4
相关
在下列比赛中: