1. 问题背景
这是石子合并问题的优化解法,目标是找到合并n堆石子的最小代价,每次合并相邻两堆,合并代价为两堆石子的重量之和。
2. 四边形不等式优化原理
朴素DP复杂度:O(n),需要对每个区间枚举所有分割点
优化后复杂度:O(n),利用了决策点split[i][j]的单调性
单调性性质:split[i][j-1] ≤ split[i][j] ≤ split[i+1][j]
3. 关键数据结构
prefix数组:前缀和,用于O(1)计算区间和
dp数组:存储最小合并代价
split数组:存储最优决策点,是优化的核心
4. 时间复杂度分析
外层循环:按区间长度递增,O(n)
内层循环:区间起点遍历,O(n)
最内层循环:由于四边形不等式的性质,所有区间的k枚举总次数为O(n)
总复杂度:O(n),相比朴素O(n)有显著提升
5. 注意事项
数组下标从1开始,方便计算
k < j条件确保分割点有效
初始化split[i][i] = i是四边形不等式正确性的基础
区间和计算:prefix[j] - prefix[i-1]