差分约束

差分约束

假设有这样的三个条件:

img

那么我们可以将不等式1和不等式2相加得到:

img

那么如果想要得到x1和x3的最大差值,那么其实就是取min(k1+k2,k3);

其实问题我们可以将问题转化成图论,将x1,x2,x3看成三个点x1,x2,x3,对应三条边的建立就根据三个不等式来建立,那么边权值如何取呢?显然我们想要最大差值,我们就需要取最大值,那么图可以建立成这样:

img

那么我们上述过程将不等式1和不等式2相加,然后和不等式3比较值的过程,其实就是最短路计算过程中的判断能否松弛的过程。

那么我们就可以根据不等式建立有向图,然后再通过有向图计算1号点到n号点的最短路,其值就是x1与xn的最大差值。

posted @ 2022-01-30 16:43  waby  阅读(42)  评论(0编辑  收藏  举报