差分约束
我是摇摆哥!老刷三狼干什么!
对于形如 \(a_{v} \le a_{u} + w\) 的多组不等式,如何求解?
很明显,这是一个三角不等式。即,如果 \(a_{x}\) 为 \(x\) 到源点的最小值,该式一定成立。对于所有边一定不能再松弛任意一点。
所以考虑对于该式求最短路,\(u\) 到 \(v\) 有一条边权为 \(w\) 的边。建造一个超级源点 \(0\),向所有点连一条边权为 \(1\) 的边,如果有负环就无解,否则即可得到正整数解。
同样的,如果将式子变为 \(a_{v} - w\le a_{u}\),\(v\) 到 \(u\) 有一条边权为 \(-w\) 的边然后同上述技巧建图,跑最长路即可。
如何求最大值最小的正整数解?(\(a_{n}-a_{0}\) 最小)
找了好久,这个感觉网上清晰的介绍不太多啊。
对于任意一条从 \(0\) 到 \(n\) 的路径,经过的点为 \(c_{i}\),我们都要满足以下条件。
或
如果是最长路,我们取得是所有路径中最长的一条,因为我们对于每一条上述路径,都要满足 \(a_{n} \ge (\sum_{i=1}^{n} (-w_{i-1,i}))\),所以取最长路,这是在处理性质。由于是 \(\ge\),所以满足条件要大于等于 \((\sum_{i=1}^{n} (-w_{i-1,i}))\) 的最大值,正好是最长路求得的值,所以我们紧贴限制的下界,自然就是最小值。
如果我们是最短路,那么我们取就是的所有这个路径的最小 \(\sum_{i=1}^{n} w_{i-1,i}\),但是实际上我们取的是在满足 \(a_{v} \le a_{u} + w\) 这个式子的情况下的最大值。重新梳理一遍,为了满足 \(a_{v} \le a_{u} + w\),所以需要跑最短路,求出来的答案是最短路,并且求出的答案不能在变大了,否则不满足 \(a_{v} \le a_{u} + w\) 的限制,由于是 \(a_{v} \le a_{u} + w\),所以我们的 \(a_{v}\) 实际上可以变得更小,但我们此时取得是 \(a_{u}+w\),相当于取了符合限制的最大值。