差分约束系统

小结:

差分约束就是用最短(最长路径)来解决满足一系列约束条件的问题的最优解,首先约束条件必须满足一定的限制,即每个约束条件系数只能为1,-1这样的不等式。

差分约束系统的解题过程大致为:

a 建立约束图

增加一个原点,根据约束条件构造约束图。

b 利用dijkstra或者bellman_ford求出最短(长)路径,如果有负边,只能用后者。

如果题目要求出最小值,我们将所有的不等式转化成>=,构造出约束图,开始的时候每个dist[i]赋值为-INF,然后求最长路径,这个是原点距离固定的情况,比如题目poj1201,mina是最小坐标,minb是最大坐标,题目让求的是dist[maxb]-dist[mina],我们令dist[mina]=0,求出来dist[maxb]为所求。

如果求最大值,将不等式转化为<=,求最短路径,开始的时候每个dist赋值为INF,并令固定点赋值为0,例如题目poj3159.

你可能感兴趣的:(差分约束)