zoukankan      html  css  js  c++  java
  • 让菜鸡讲一讲四边形不等式优化

    众所周知四边形不等式优化是应用在区间DP里面的我也不知道有什么其它地方可以用

    那么我们有时候在做区间DP的时候可以遇见这样的转移方程

    [f(i,j)=min(f(i,k-1),f(k,j))+w(i,j),ileq kleq j ]

    f(i,j)表示的是在(i,j)上的最优值,而w(i,j)是转移所需额外的代价

    众所周知这玩意儿复杂度是(O(n^3))

    看起来很不爽

    那么现在我们可以用四边形不等式优化这个技能来把它优化一下

    不过这个技能的使用是有条件的

    四边形不等式优化条件

    区间包含的单调性

    额,其实就是对于每个(aleq b < cleq d)

    满足(w(a,d)geq w(b,c))

    就是某个区间的w不能小于它的子区间的w

    四边形不等式

    对于每个(aleq b < cleq d)

    也满足(w(a,c)+w(b,d)leq w(a,d)+w(b,c))

          v-------v
      v-----------------v
    oooooooooooooooooooooo
      ^-----------^
          ^-------------^
    

    就是上面2个w加起来不能小于下面2个w

    在满足了条件后

    于是w函数满足区间包含的单调性四边形不等式

    一个定理可以使用啦:f函数也相应的满足了四边形不等式

    假设(f(i,j)=min(f(i,k-1),f(k,j))+w(i,j))(k=loc(i,j))取到最小

    因为f函数也满足了四边形不等式

    所以loc函数是单调的,即(loc(i,j)leq loc(i,j+1)leq loc(i+1,j+1))

    那么有一个强大的定理又可以使用了:

    [f(i,j)=min(f(i,k-1),f(k,j))+w(i,j),loc(i,j-1)leq kleq loc(i+1,j) ]

    至于有多强大?你可以发现这个转移的复杂度变成了(O(n^2))

  • 相关阅读:
    JVM调优总结
    如何使用 Java 泛型来避免 ClassCastException
    JAVA中的断言是什么?有什么陷阱?
    JVM Thread Dump 文件分析
    学习单例模式引发的思考
    JVM生成的3种文件,你都见过吗?
    一文搞懂什么是事务
    bug处理流程
    BUG等级说明
    测试执行标准
  • 原文地址:https://www.cnblogs.com/finder-iot/p/8416085.html
Copyright © 2011-2022 走看看