• 区间DP模板和四边形优化


    for(int len = 1;len<=n;len++){//枚举长度
            for(int j = 1;j+len<=n+1;j++){//枚举起点,ends<=n
                int ends = j+len - 1; 
                for(int i = j;i<ends;i++){//枚举分割点,更新小区间最优解
                    dp[j][ends] = min(dp[j][ends],dp[j][i]+dp[i+1][ends]+something);
                }
            }
        }
    

    区间DP模板

    模板题:poj1651,hdu4632

    区间dp,就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解,进而得出整个大区间上最优解的dp算法。

    具体操作
    枚举区间长度len为每次分割成的小区间长度(由短到长不断合并),
    中层枚举该长度下可以的起点(终点即为起点+len)
    内层在这个起点终点之间枚举分割点,求解这段小区间在某个分割点下的最优解。

    四边形不等式优化的应用

    状态转移方程骨架:

    [m(i,j)=min{m(i,k-1),m(k,j)}+w(i,j) \(i≤k≤j) ]

    优化目标:O(N3)到O(N2)
    判定性质:

    1:区间包含的单调性:如果对于i≤i'<j≤j',有w(i',j)≤w(i,j')

    2:四边形不等式:如果对于i≤i'<j≤j',有w(i,j)+w(i',j')≤w(i',j)+w(i,j')

    定理一:如果上述的w函数同时满足区间包含单调性和四边形不等式性质,那么函数m也满足四边形不等式性质。
    定理二:假如m(i,j)满足四边形不等式,那么s(i,j)单调,s(i,j)≤s(i,j+1)≤s(i+1,j+1)。
    s(i,j)表示m(i,j)取得最优值时对应的下标(即i≤k≤j时,k处的w值最大,则s(i,j)=k)
    优化后的状态转移方程骨架

    [m(i,j)=min{m(i,k-1),m(k,j)}+w(i,j)\(s(i,j-1)≤k≤s(i+1,j)) ]

  • 相关阅读:
    今年暑假不AC
    亲和数
    改革春风吹满地
    hdu人见人爱A^B
    男人必看的10部电影
    富人和穷人之间的经典差异
    今日十句英文
    看透一个人起码要看的。
    人生经典20句
    解决ubuntu中mysql中文乱码问题
  • 原文地址:https://www.cnblogs.com/dpsama/p/12356825.html
Copyright © 2020-2023  润新知