总结差分约束模型的要点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结差分约束模型的要点相关的知识,希望对你有一定的参考价值。

  只是一些自己想到的东西,记下来以防忘记。

 

  1. 求解一系列的 f[b] - f[a] <= x 不等式组时,由a向b建权值为x的边,求最短路。有负环时无解,体现为在SPFA中一个点入队超过n次。

  2. 求解一系列的 f[b] - f[a] >= x 不等式组时,由a向b建权值为x的边,求最长路。有正环时无解,体现为在SPFA中一个点入队超过n次。

  3. 当不等式组中有两种不等式时,应转化为一种不等式,再建边、求最短(长)路。f[b] - f[a] == x 可转化为 f[b] - f[a] <= x 与 f[b] - f[a] >= x 的组合。

  4. 需要判无解时若n过大,可以减小入队次数标准以求减小运行时间,例如sqrt(n)次,带来的后果是有可能会出错。(不确定)

  5. 判断不等式组是否有解时,可能没有确定的起点,需要加一个超级源点s,并向所有其它点连一条s到该点权值为0的有向边,再从点s跑SPFA。

  6. 求点s到点t的最短路,即求满足所有不等式的 f[t] - f[s] 的最大值(求最长路时类似)。有些题目中s和t不是确定的,需要自己判断,如果搞反了显然答案是错误的(有向图不同于无向图)。

  7. 注意隐含的不等式,如 sum[i+1] - sum[i] >= 0 等等。

 

  下面两个博客有非常详细的讲解/习题,很不错:

  http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html

  http://blog.csdn.net/consciousman/article/details/53812818

以上是关于总结差分约束模型的要点的主要内容,如果未能解决你的问题,请参考以下文章

差分约束系统总结(转)

差分约束算法总结

浅谈差分约束系统

初涉差分约束系统

有关差分约束系统

差分约束+模板