zoukankan      html  css  js  c++  java
  • 差分约束系统个人理解

    今天接触到一种很玄幻的东西:

    差分约束

    个人的理解:差分约束就是给定一些限制条件,求出满足条件的最优解,或者判断条件是否成立

    做法/思路:

    1.首先根据题目的条件,写出相应的不等式

    2.将不等式转换成a-b<=c的形式

    3.建一条权值为c的边,从b指向a

    4.从0点向其他点连一条边权为1的点

    5.跑深搜的SPFA,看看答案是否更新

    这样做完,求得的是最短路!得出的是满足条件的最大值!

    当然,你也可以按照和上面完全相反的思路做,

    那么做法和得到的结果都是和上述完全相反的,但是都可以AC!

    这里面肯定是有很多疑点的,我来根据的我理解解释一下

    1.为什么要建一条从b到a的边权为c的边

      因为a-b<=c,所以b到a的边权最大就是c,那么得到的答案也是最大

    2.为什跑的是最短路不是最长路

      因为我们每次建的都是最大的边权,而我们要求出满足所有的不等式的值。

      那么当这个值是所有不等式中的最小的值得时候方能满足条件,

      所以我们要求最短路

    3.为什么SPFA要跑深搜而不是广搜

      因为深搜容易判断负环!

    4.为什么要建一条从0到所有的点的边

      个人感觉:为了方便更新答案,因为0在所有边中都没有出现过

    推荐几篇比较好的文章:

    http://972169909-qq-com.iteye.com/blog/1185527

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

  • 相关阅读:
    SpringBoot使用SpringSession和redis解决session共享问题(nginx反向代理)
    centos7中安装和配置nginx和keepalived
    定位
    css
    css美化
    html5
    列表,表格,媒体元素
    表单
    一期测试错题修改
    字符串
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7128183.html
Copyright © 2011-2022 走看看