题目
[差分约束]BZOJ 2330:用最短路算法求最长路求差分约束
[差分约束]poj 1201:用最短路算法求最长路求差分约束
[差分约束]Hdu 1531:用最短路算法求最长路求差分约束解的存在性
[差分约束]Hdu 3592:求差分约束最大差
模板及讲解
差分约束就是给出一些形如 x−y≥c 的约束,问你是否有解,或求最大、最小解。
该问题可以转化为图上最短路问题。
1、求最大差
建立形如
A−B<=C
的不等式,在原图中添加边
B−>A
边权为
C
对建好的图跑最短路,如果存在负环,无解(判断条件为某点被更新了
2、求最小差
建立形如
A−B>=C
的不等式,在原图中添加边
B−>A
边权为
C
对建好的图跑最长路,如果存在正环,无解(判断条件为某点被更新了
(以上出自该博客,如果侵犯到了您的权益,请联系我移除)
我们可以建立一个虚结点,然后让这个虚结点指向所有图中的结点,权值为0,从虚结点开始求最短路。(还可以先把所有点加入队列,之后dis全部初始化为0)
不等式标准化方法:
如果有一个不等式为
同理
x−y<c
可变为
x−y≤c−1
如果是
x−y=c
,则变为两个式子
x−y≤c,x−y≥c
poj 1201:建立形如
A−B>=C
的不等式,求最小解
BZOJ 2330:依旧建立形如
A−B>=C
的不等式,所不同的是不等式的标准化