题目描述
有N堆石子围成一个圆,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。
输入
有多组测试数据,输入到文件结束。
每组测试数据第一行有一个整数n,表示有n堆石子。
接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开。
输出
输出总代价的最小值,占单独的一行。
样例输入
3
1 2 3
4
3 5 2 3
6
3 5 7 3 4 2
样例输出
9
26
60
题目解析:
在之前的直线形石子合并的优化中,我们利用了四边形不等式进行了优化,同样的,在环形石子合并中,我们依然可以采用同样的方法,如果对之前优化不太清楚的同学,可以查看我之前的博客,链接为https://blog.csdn.net/chenpeixing361/article/details/88742815。
我们依然采用上次的方法,划圆为直,把数组长度变为2*n-1,然后利用四边形不等式,得到最优决策下的k值,在之前的基础上,我们只需要