首页 > 代码库 > 【基础练习】【区间DP】codevs2102 石子归并2(环形)题解

【基础练习】【区间DP】codevs2102 石子归并2(环形)题解

题目描写叙述 Description

在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次仅仅能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。


试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.

输入描写叙述 Input Description

数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.

输出描写叙述 Output Description

输出共2行,第1行为最小得分,第2行为最大得分.

例子输入 Sample Input

4
4 4 5 9

例子输出 Sample Output

43
54

将环形变成线性,数组开大一倍就可以。

ans=min{f[1,n],f[2,n+1],...,f[n,2n-1]}

复杂度O(n^3)

前缀和等与线性一致。仅仅是要注意循环什么的都要开到2*n-1

代码在此

<script src="https://code.csdn.net/snippets/882965.js" type="text/javascript"></script>

——今古恨,几千般,仅仅应离合是悲欢



【基础练习】【区间DP】codevs2102 石子归并2(环形)题解