差分约束也是个咕了很久的简单玩意。
俺咕诶
总述
主要思想是转化为图论问题。对于一大堆 \(x - y \leq w\) 求可行解,移个项发现变成了 \(x \leq y + w\) 注意到这玩意很像某松弛操作,于是考虑转化为最短路问题。
回忆最短路进行松弛操作的条件,\(dis_u > dis_v + w\),那么把咱们的柿子移个项对应一下 \(y \geq x - w\),于是 \(y\) 作为 \(v\) 向 \(u\)(也就是 \(x\))连边,跑最短路即可
等于号无所谓,不影响。
总结:
-
对于形如 \(x - y \leq w\) 的不等式,\(y\) 向 \(x\) 连边,跑最短路。
-
无解的条件是图中存在负环。
跑 \(\text{spfa}\) 即可/oh。
咋判环捏?
记录入队次数,如果 \(>n\) 就说明存在负环
为啥是 \(> n\)?
因为SPFA正常情况下每个点顶多入队 \(n\) 次。至于为啥是 \(n\) 次:你想想为什么 \(\text{spfa}\) 可以被卡到 \(O(nm)\)。每个点全部入队 \(\text{n}\) 次呗。
不等式不长这样咋办?
移项就行了。特殊说一下 \(x + y = w\) 这种:可以拆成 \(x + y \geq w\) 和 \(x + y \leq w\) 两个不等式,于是就解决了。
题
还没做题,做了把代码扔过来,最近任务比较多。
标签:浅谈,不等式,text,短路,差分,约束,leq,入队 From: https://www.cnblogs.com/charphi/p/16833697.html