差分约束
假设有这样的三个条件:
![img](https://i-blog.csdnimg.cn/blog_migrate/ab924565010ef31d252a2e0eaa4828ab.png)
那么我们可以将不等式1和不等式2相加得到:
![img](https://i-blog.csdnimg.cn/blog_migrate/fe9a2eaf44349e0a49fa13ede05003a4.png)
那么如果想要得到x1和x3的最大差值,那么其实就是取min(k1+k2,k3);
其实问题我们可以将问题转化成图论,将x1,x2,x3看成三个点x1,x2,x3,对应三条边的建立就根据三个不等式来建立,那么边权值如何取呢?显然我们想要最大差值,我们就需要取最大值,那么图可以建立成这样:
![img](https://i-blog.csdnimg.cn/blog_migrate/8a8517bfb4d09b0ff61512aa98348064.png)
那么我们上述过程将不等式1和不等式2相加,然后和不等式3比较值的过程,其实就是最短路计算过程中的判断能否松弛的过程。
那么我们就可以根据不等式建立有向图,然后再通过有向图计算1号点到n号点的最短路,其值就是x1与xn的最大差值。