zoukankan      html  css  js  c++  java
  • 学习笔记 四边形不等式的模型

    四边形不等式的模型

    前言

    对于四边形不等式,做题时总会找较为普遍的模型,它们具有决策单调性,而在大部分情况下这些模型总能归类到以下几种,为了方便理解和总结作用我在以下给出几种比较常见的模型。

    当然真正在考场上做题做好还是打表找决策点,更方便一些。

    写的比较拉,后面因为咕咕咕就真全阉了。

    本篇

    基本转换形式

    • (w(l-1,r) + w(l,r+1) le w(l,r)+w(l-1,r+1)) 推导到任意 (a),(b) 满足 (l-age 1)(r+ble n) ,均满足 (w(l-a,r)+w(l,r+b)le w(l,r)+w(l-a,r+b))

    数学归纳法证明:

    现有式子 ①:(w(l-1,r) + w(l,r+1) le w(l,r)+w(l-1,r+1))

    对于区间 ([l-1,r]) ,通过这个基本形式可得式子 ②:(w(l-2,r) + w(l-1,r+1) le w(l-1,r)+w(l-2,r+1))

    两式同号相加,并去除相同项得:(w(l-2,r) +w(l,r+1) le w(l-2,r+1)+w(l,r))

    即不等式从四元组 ((l-1,l,r,r+1)) 可推导到 ((l-2,l,r,r+1))

    则归纳可得 ① 可以推导到任意四元组 ((a,b,c,d)~(ale ble cle d))(相等的时候不是显然成立)

    1D|1D

    最经典simple的形式。

    • (f[i] = min{f[j] + w(j, i)}~ (j< i))(w(l-1,r) + w(l,r+1) le w(l,r)+w(l-1,r+1)) (即 (w) 满足四边形不等式)。

      式子中 (w(j, i)) 写成 (w(j + 1, i)) 也可以,定义都是相同的。

      (f[i]) 的决策点下标必然大于等于 (f[j]) $(jle i) $ (决策点非严格单调递增)(这里的 (j) 不同于上面的 (j) )的决策点。

    证明:

    (d[j])(f[j]) 的决策点,假设 (f[i]) 的决策点下标小于 (d[j]) 令为 (x)(i > j))。

    [ecause x为点i的最优决策点\ herefore f[i]=f[x]+w(x,i)le f[d[j]]+w(d[j],i)\ ecause d[j]点j的最优决策点\ herefore f[j]=f[d[j]]+w(d[j],j)le f[x]+w(x,j)\ ]

    同号不等式相加得:

    [w(x,i)+w(d[j],j)le w(d[j],i)+w(x,i) (1)\ ecause x<d[j]<j<i\ herefore w(x,i)+w(d[j],j)ge w(d[j],i)+w(x,i)(2)\ ecause (1)与(2)矛盾\ Q.E.D ]

    以下两类证明的过程比较复杂生硬,这里只给出一些结论,若要深度弄懂这些结论可以上OI-wiki查阅,十分详细。

    2D|1D(非区间)

    类似于机器人生产工作时间放置问题,本篇以 luoguP4767 为例。

    • (f[i][j]=egin{cases} min{f[k][j-1]+w(k+1,i)}&(k<i&jge 2)\ w(1,i)&(j=1)end{cases})(w) 满足四边形不等式。

      (d[i][j])(f[i][j]) 的决策点。

      (d[i][j]) 非严格单调递增且满足(d[i][j-1]le d[i][j]le d[i+1][j]),且 (f[i][j]) 也满足四边形不等式。

    2D|1D(区间)

    也是很经典的式子(类似于合并果子):

    • (f[i][j] = egin{cases}min{f[i][k] + f[k + 1][j] + exttt{value} (i, j) } & (j > i) \ 0 & (i = j) end{cases})

      (d[i][j])(f[i][j]) 的决策点。

      (d[i][j]) 非严格单调递增且满足(d[i][j-1]le d[i][j]le d[i+1][j]),且 (f[i][j]) 也满足四边形不等式。

    参考

    OI-wiki 四边形不等式优化

    别人的学习笔记

  • 相关阅读:
    C 习题
    gcc
    几何视角看线性方程组解的情况
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    为什么重写了equals(),还要重写hashCode()?
    关于ArrayList的越界问题?
    通过实例聊聊Java中的多态
    java异常处理实例分析
    Java: Integer用==比较时127相等128不相等的原因
    Java并发编程:Lock
  • 原文地址:https://www.cnblogs.com/RedreamMer/p/14509644.html
Copyright © 2011-2022 走看看