差分约束学习笔记

差分约束

引入

对于一个序列{x1,x2,x3,,xn},我们得知关于它的一系列不等式,形如x1x2ki,然后我们可以求出一些东西,例子如下:

  • xnx0的最大最小值。

  • 一个合法的x序列。

  • 等等等


对于上述问题,我们有什么好的解决方法呢?

我们可以观察学过的一个算法,最短路算法中的松弛操作:

dis[u]+w(u,v)dis[v]
(其实应该是<,为了方便理解加了等号。)
将其变形可以得到:
dis[u]dis[v]w(u,v)

这时我们可以将dis[a]看作xaw(a,b)看作xaxbki中的ki,那么这个是不是正好照应了我们的不等式关系?

那么我们可以将其转换为一条有边权的有向边,然后通过SPFA(因为大多数有负权)跑最短路或者最长路就可得到答案。

后期更新。。。。。。

原文地址:https://www.cnblogs.com/VictoryCzt/p/10053422.html