ACM周训练总结(六)
本周正赶上清明假期,所以少上了一节课,也算是让我这样的吊车尾稍微地放松了一下下,本周继续学习了动态规划的相关课程,同前几周不同的是,本周学习了另一种动态规划的题目类型——区间型动态规划。
区间型动态规划,又称为合并类动态规划,是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的区间中哪些元素合并而来有很大的关系。其主要思想就是在小区间进行 DP 得到最优解,然后再利用小区间的最优解合并求大区间的最优解。
在解决此类问题时,往往会枚举区间,将区间分成左右两部分,再求出左右区间进行合并操作。这样一来,如果要得知一个大区间的情况,由于它必定是由从多个长度不一的小区间转移而来,那么可以通过求得多个小区间的情况,从而合并信息,得到大区间。
其状态转移方程为:
寻找区间 dp[i,i+k] 的一种合并方式 dp[i,j] +dp[j+1,i+k],使得其值最大或最小区间长度 k 必须要放到第一层循环,来保证方程中状态 dp[i,j]、dp[j+1,i+k] 值在 dp[i,i+k] 之前就已计算出来a[i,j]+a[j+1,i+k] 可以灵活多变,其指的是合并区间时产生的附加值。