预备知识:最短路SPFA/Dijkstra等
一、定义
如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。(百度词条)
简单来说,只要问题能够被转化成一组 xi - xj <= k 的不等式,都可以用差分约束系统求解。(k的正负不重要)
二、原理
原理很简单,将 xi - xj <= k 移项得 xi + (-k) <= xj,与最短路中的松弛操作 d(u) + w(u, v) <= d(v) 非常类似,所以求解最大值/最小值的过程可以看作求解最短路中的松弛过程。
举个栗子:
给定不等式组
B - A <= a
C - A <= c
C - B <= b
求 C-A 的最大值,可以看出 max(C - A) = min(c, a + b),对应下图中A到C的最短路
观察上面例子中的不等式,都是 xi - xj <= k ,移项得 xi <= xj + k,我们记 v = xi, u = xj, k = w(xj, xi)