100 #3219. 石子合并(直线版)
石子合并(直线版)
题目描述
在一条直线上摆着 堆石子,第 堆有 个。每次只能把相邻的两堆合并成一堆,合并的代价是这两堆石子的总数。经过 次合并后变成一堆。
求把所有石子合并成一堆的最小总代价。
输入格式
第一行一个整数 。
第二行 个整数 。
输出格式
一行一个整数,表示最小总代价。
输入样例 1
4
1 3 5 2
输出样例 1
22
说明
最优方案之一:先合并 1+3(代价 4),再合并 5+2(代价 7),最后合并 4+7(代价 11),总代价 。
贪心反例
石子序列: 9 4 6 1 5
贪心过程
| 步骤 | 序列 | 操作 | 本次代价 | 累计 |
|---|---|---|---|---|
| 1 | [9, 4, 6, 1, 5] |
合并 1+5=6(最小相邻和) |
6 | |
| 2 | [9, 4, 6, 6] |
合并 4+6=10 |
10 | 16 |
| 3 | [9, 10, 6] |
合并 10+6=16 |
16 | 32 |
| 4 | [9, 16] |
合并 9+16=25 |
25 | 57 |
最优方案(DP)
| 步骤 | 序列 | 操作 | 本次代价 | 累计 |
|---|---|---|---|---|
| 1 | [9, 4, 6, 1, 5] |
合并 9+4=13 |
13 | |
| 2 | [13, 6, 1, 5] |
合并 1+5=6 |
6 | 19 |
| 3 | [13, 6, 6] |
合并 6+6=12 |
12 | 31 |
| 4 | [13, 12] |
合并 13+12=25 |
25 | 56 |
贪心 57 > 最优 56,差距虽小,但足以说明贪心不成立。
数据范围
,。