传统题 1000ms 256MiB

石子合并

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

设有 nn 堆石子排成一排,其编号为 1,2,3,,n1, 2, 3, \dots, n

每堆石子有一定的质量,可以用一个整数来描述,现在要将这 nn 堆石子合并成为一堆。

每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。

例如有 44 堆石子分别为 1 3 5 2, 我们可以先合并 1122 堆,代价为 44,得到 4 5 2, 又合并 1122 堆,代价为 99,得到 9 2 ,再合并得到 1111,总代价为 4+9+11=244+9+11=24

如果第二步是先合并 2233 堆,则代价为 77,得到 4 7,最后一次合并代价为 1111,总代价为 4+7+11=224+7+11=22

请你找出一种合理的方法,使总的代价最小,输出最小代价。

输入格式

第一行包含一个整数 nn (1n3001 \leq n \leq 300) — 石子的堆数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n (1ai1031 \leq a_i \leq 10^3) — 每堆石子的质量。

输出格式

输出一个整数,表示最小代价。

样例

4
1 3 5 2
22

提示

想想一个区间的和该怎么快速求出来。

递归算法

未认领
状态
已结束
题目
11
开始时间
2026-2-16 0:00
截止时间
2026-2-22 23:59
可延期
0 小时