Loading

差分约束系统学习笔记

注意!
差分约束系统有两种方式可以求解,最短路和最长路。当我们把不等式整理成d[a]+w<=d[b]时,我们求最长路。整理成d[a]+w>=d[b]时,我们求最短路。当求最短路时,我们通常要把各点距离初始化为正无穷,求最短路,把各点距离逐渐减小,直到符合所有不等式。也就是开始 各点不符合条件,后来通过减小变得符合了,所以一定是符合条件的最大值。既然是求最大值,并且是减小各点距离,也就是把各点由数轴的右侧向左侧拉,所以我 们一定要选择一个最终在数轴最左侧的点,并初始化为0,把所有正无穷的点拉近到符合不等式。最长路同理。

题目中说要求最小的话,那么我们要跑最长路;若求最大的,那么我们要跑最短路。具体的证明上面的博客也有叙述,这里大体说下:就是求最小时,我们跑最长路,假如跑完后还有更小的,那么在跑最长路时一定还会对其进行松弛,使其变得更大,所以我们跑完最长路后,一定不会还存在更小的了。求最大的也同样的道理。
(皆为他人所言)

posted @ 2020-10-05 16:17  fpjo  阅读(128)  评论(2编辑  收藏  举报