区间 DP 什么是区间 DP? 区间类动态规划是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的哪些元素合并而来有很大的关系。令状态 
区间 DP 的特点:
合并 :即将两个或多个部分进行整合,当然也可以反过来;
特征 :能将问题分解为能两两合并的形式;
求解 :对整个问题设最优值,枚举合并点,将问题分解为左右两个部分,最后合并两个部分的最优值得到原问题的最优值。
例题 「NOI1995」石子合并   题目大意:在一个环上有 
考虑不在环上,而在一条链上的情况。
令 
写出 状态转移方程 :
令 
怎样进行状态转移 由于计算 
怎样处理环 题目中石子围成一个环,而不是一条链,怎么办呢?
方法一 :由于石子围成一个环,我们可以枚举分开的位置,将这个环转化成一个链,由于要枚举 
方法二 :我们将这条链延长两倍,变成 
核心代码 // C++ Version 
for   ( len   =   1 ;   len   <=   n ;   len ++ )    for   ( i   =   1 ;   i   <=   2   *   n   -   1 ;   i ++ )   {      int   j   =   len   +   i   -   1 ;      for   ( k   =   i ;   k   <   j   &&   k   <=   2   *   n   -   1 ;   k ++ )        f [ i ][ j ]   =   max ( f [ i ][ j ],   f [ i ][ k ]   +   f [ k   +   1 ][ j ]   +   sum [ j ]   -   sum [ i   -   1 ]);    } 
# Python Version 
for  len  in  range ( 1 ,  n  +  1 ): 
    for  i  in  range ( 1 ,  2  *  n ): 
        j  =  len  +  i  -  1 
        while  k  <  j  and  k  <=  2  *  n  -  1 : 
            f [ i ][ j ]  =  max ( f [ i ][ j ],  f [ i ][ k ]  +  f [ k  +  1 ][ j ]  +  sum [ j ]  -  sum [ i  -  1 ]) 
            k  +=  1 
几道练习题 NOIP 2006 能量项链 
NOIP 2007 矩阵取数游戏 
「IOI2000」邮局 
build 本页面最近更新:2021/8/4 11:15:20 ,更新历史 edit 发现错误?想一起完善? 在 GitHub 上编辑此页! people 本页面贡献者:AFObject , billchenchina , Enter-tainer , greyqz , Henry-ZHR , hsfzLZH1 , iamtwz , Ir1d , isdanni , ksyx , ouuan , OYoooooo , partychicken , StudyingFather , thredreams copyright 本页面的全部内容在 CC BY-SA 4.0  和 SATA