具体能解决的问题:

求最长路,最短路,或者判断解是否存在。

在建边的时候:

一般是给你区间减法的关系,或者是这个点到另一个点的关系。如果给你的关系是除法的话,我们可以通过使用两边同时取log的方式,将除法变成两个式子的减法,这样就转换成了减法的建边。

判断最优解的时候:

一般是判断是否有负环或者正环,但是一个spfa只能判断一种,因为正环和负环的松弛条件是不同的,在判断是正环还是负环的时候,一般是判断某一个点的入队次数是不是大于总的点数,如果存在这种情况那肯定是存在正环或者负环的,如果是tle的话,可以考虑(仅供考虑)的一种优化的判断,判断某一个点的入队次数是不是大于sqrt(总的点数)。

对建边的初步理解:

1,如果是求最长路或者最短路的话,我们可以将所有的不等式都化成如下的式子,posA-posB<=d。

然后对于求最长路,就是在spfa的基础上改就可以了。将dis输出初始化成-inf,然后判断条件变成if(dis[ed]<dis[st]+edge[i],cost),这样的时候再去更新。

如果是求最短路的话,松弛条件改一下就可以了。

然后再就是建边的时候,有两种方法(超级源点的建立)。

第一种,如果是求前缀的话,对于posA-posB<=d,我们可以addedge(A,B,d)。这样话,就相当于从大的方向去链接小的方向,注意,如果只是按照题目条件去建边的话,整个图可能是不连通的,为了使图联通,我们可以建立一个超级源点,如果是从大的方向向小的方向建边的话,我们可以使超级源点是(总点数+1),然后这个超级源点再去连其他所有的点,边权为0,这样就不会影响到图,并且能够保证整个图是联通的。

第二种,如果是求后缀的话,我们就可以按照第一种的方法反着来就行了。

但是建边的额时候还是尽量少建点边,很可能会超时。

判断可行解:

对于区间的可行解的话,我们可以直接从右边界遍历到右边界,如果可以的话,判断两个相邻的点的dis(一般间隔是1)是不是变了没如果变了就说明当前这个点肯定有解。

差分约束系统专题 && 对差分约束系统的理解的更多相关文章

  1. 差分数组 and 树上差分

    差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易 ...

  2. 树上差分 (瞎bb) [树上差分][LCA]

    做noip2015的运输计划写了好久好久写不出来   QwQ 于是先来瞎bb一下树上差分    混积分 树上差分有2个常用的功能: (1)记录从点i到i的父亲这条路径走过几次 (2)将每条路径(s,t ...

  3. 【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md

    前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OS ...

  4. Java并发专题(三)深入理解volatile关键字

    前言 上一章节简单介绍了线程安全以及最基础的保证线程安全的方法,建议大家手敲代码去体会.这一章会提到volatile关键字,虽然看起来很简单,但是想彻底搞清楚需要具备JMM.CPU缓存模型的知识.不要 ...

  5. 字典树&&01字典树专题&&对字典树的理解

    对于字典树和01字典树的一点理解: 首先,字典树建树的过程就是按照每个数的前缀来的,如果你要存储一个全小写字母字符串,那么这个树每一个节点最多26个节点,这样的话,如果要找特定的单词的话,按照建树的方 ...

  6. 专题:LFS构建逻辑理解

    严格来说,LFS只能称为“pseudo LFS”,WHY? 因为LFS归根结底,还是基于已有的操作系统平台构建而来,并非真正的从0开始,它没有突破所谓“鸡与蛋”的死循环:但它确实有助于理解Linux的 ...

  7. 差分:IncDec Sequence 差分数组

    突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的-- 先看一个经典例题: 给定一个长度为n的数列{a1,a2...an},每次可以选择一 ...

  8. 『Candies 差分约束系统』

    差分约束系统 我们先来认识一下差分约束系统鸭! 差分约束系统是一种特殊的\(n\)元一次不等式组,它包含了\(n\)个变量\(x_1-x_n\)以及\(m\)个不等式(约束条件).其中每一个不等式形如 ...

  9. PCB走线分析——直角、差分、蛇形线

    PCB直角走线的影响   布线(Layout)是PCB设计工程师最基本的工作技能之一.走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过 Layout 得以实现并验证,由此可见,布 ...

随机推荐

  1. vue 组件 组件2

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>T ...

  2. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

  3. http的无状态无连接

    搞爬虫的核心:http协议. 在理解http中的无状态和无连接时,有一些困惑,下文可以解决. 转自:http://www.cnblogs.com/bellkosmos/p/5237146.html h ...

  4. 一步步创建第一个Docker App —— 1. 背景介绍

    原文:https://docs.docker.com/engine/getstarted-voting-app/#/docker-stacks-and-services 你将会学习什么    本文创建 ...

  5. 解题:洛谷4721 [模板]分治FFT

    题面 这是CDQ入门题,不要被题目名骗了,这核心根本不在不在FFT上啊=.= 因为后面的项的计算依赖于前面的项,不能直接FFT.所以用CDQ的思想,算出前面然后考虑给后面的贡献 #include< ...

  6. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 D. 白色相簿

    从某一点开始,以层次遍历的方式建树若三点a.b.c互相连接,首先必先经过其中一点a,然后a可以拓展b.c两点,b.c两点的高度是相同的,若b(c)拓展时找到高度与之相同的点,则存在三点互相连接 //等 ...

  7. 添加jar包需注意

    对于纯java项目使用的是本地自己的JRE,通过build path导入的JAR包的配置信息会出现在应用的”.classpath”文件中,ClassLoader会智能地去加载这些JAR. 而Web项目 ...

  8. lumen 增加视图路径

    在 ServiceProvider 里面加上 app('view')->addLocation(module_path('Develop') . '/resources/views');

  9. linux命令总结dd命令详解

    一:dd命令 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: if=文件 ...

  10. JS获取当前时间并格式化"yyyy-MM-dd HH:mm:ss"

    先来看下JS中的日期操作: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年 ...