浅谈差分约束

差分约束也是个咕了很久的简单玩意。

俺咕诶


总述

主要思想是转化为图论问题。对于一大堆 \(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\)

因为 \(\text{SPFA}\) 正常情况下每个点顶多入队 \(n\) 次。至于为啥是 \(n\) 次:你想想为什么 \(\text{spfa}\) 可以被卡到 \(O(nm)\)。每个点全部入队 \(\text{n}\) 次呗。

不等式不长这样咋办?

移项就行了。特殊说一下 \(x + y = w\) 这种:可以拆成 \(x + y \geq w\)\(x + y \leq w\) 两个不等式,于是就解决了。

还没做题,做了把代码扔过来,最近任务比较多。

posted @ 2022-10-27 20:45  char_phi  阅读(27)  评论(0)    收藏  举报