差分约束学习笔记
差分约束
引入
对于一个序列,我们得知关于它的一系列不等式,形如,然后我们可以求出一些东西,例子如下:
的最大最小值。
一个合法的序列。
等等等
对于上述问题,我们有什么好的解决方法呢?
我们可以观察学过的一个算法,最短路算法中的松弛操作:
(其实应该是<,为了方便理解加了等号。)
将其变形可以得到:
这时我们可以将看作,看作中的,那么这个是不是正好照应了我们的不等式关系?
那么我们可以将其转换为一条有边权的有向边,然后通过SPFA(因为大多数有负权)跑最短路或者最长路就可得到答案。