类型1
给定n个变量和m个不等式,每个不等式形如
x[i]-x[j]<=a[k]
求x[n]-x[1]的最大值
方法
x[i]-x[j]<=a[k] 意味着x[i]最多就比x[j]多a[k]
这个时候建立图,x[i]->x[j]建立有向边,值为a[k]
那么最后求得就是节点n到节点1的最短路
最短路一定是满足所有约束的情况下取得的最大的值
这是因为我们在建边的时候已经把a[k]全部都取满了
类型2
给定n个变量和m个不等式,每个不等式形如
x[i]-x[j]>=a[k]
求x[n]-x[1]的最小值
同理我们可以沿用类型1的思路
x[i]-x[j]>=a[k] 意味着x[i]至少比x[j]多a[k]
这个时候建立图,x[i]->x[j]建立有向边,值为a[k]
那么最后求得就是节点n到节点1的最长路
最长路一定是满足所有约束的情况下取得的最大的值
这是因为我们在建边的时候已经把a[k]压缩到最低了了
容易知道,类型1和类型2实际上是对偶的关系
关于解的存在性
上文提到最短路的时候
会出现负权圈或者根本就不可达的情况
所以在不等式组转化的图上也有可能出现上述情况先来看负权圈的情况 那么此时最短路就是-oo
所以 x[n]-x[1]<=T,这个T可以取无限小的
对于根本不可到达的情况,说明x[n]和x[1]之间并没有约束关系
这种情况下x[n]-x[1]的最大值是无限大
就表明了x[n]和x[1]的取值有无限多种