前置知识
线性规划和转对偶问题。
对于费用流,设 \(c_{vw}\) 为费用,\(u_{vw}\) 为流量上界, \(x_{vw}\) 为真实流量, \(b_v\) 为 \(v\) 的入度减出度(并且需要满足 \(\sum b_v=0\)),那么得到的线性规划问题就为
\[\min\left\{\sum_{v,w} c_{vw} x_{vw}\right\}\\
\left\{\begin{array}{ll}
\sum_{w}(x_{wv}-x_{vw})=b_{v} & v \in V \\
0 \leq x_{v w} \leq u_{v w} & (u, w) \in E
\end{array}\right.
\]
由于 \(\sum b_v=0\) ,所以 \(\sum_{w}(x_{wv}-x_{vw})=b_{v}\) 其实等价于 \(\sum_{w}(-x_{wv}+x_{vw})\le -b_{v}\) 对于每个点都成立。(注意这里转成了出度减入度,为了能和CF的题解对上)
不过由于需要找到 \(\min\) ,而限制条件都是 \(\le\) ,强行给他带个负号,变成求
\[-\max\left\{\sum_{v,w} (-c_{vw}) x_{v,w}\right\}
\]
然后转对偶问题,给边的限制的变量为 \(z_{vw}\) ,给点的限制的变量为 \(y_v\) ,那么就是要求
\[-\min \left\{\sum_v (-b_{v}) y_{v}+\sum_{(v, w)} u_{v w} z_{v w}\right\}\\
\left\{\begin{array}{ll}
-y_{v}+y_{w}-z_{v w} \leq c_{v w}\\
z_{v w} \geq 0
\end{array} \quad \begin{array}{l}
& (v, w) \in E \\
& (v, w) \in E
\end{array}\right.
\]
再把这个负号放回去,变成
\[\max \left\{\sum_v b_{v} y_{v}-\sum_{(v, w)} u_{v w} z_{v w}\right\}
\]
就变成官方题解里的式子了。
做法 0
考虑上面转对偶问题转出来了个啥:限制可以变成
\[\left\{\begin{array}{ll}
y_{w}\leq c_{v w}+z_{v w}+y_{v}\\
z_{v w} \geq 0
\end{array} \quad \begin{array}{l}
& (v, w) \in E \\
& (v, w) \in E
\end{array}\right.
\]
那么把 \(y\) 看做最短路,\(z\) 看做给边额外加的边权,\(c\) 看做原有的边权,上面的式子就变成新图中最短路的三角不等式了。
然后设 \(b_1=-f,b_n=f,b_v=0,v\notin\{1,n\}\) ,再设 \(u_{v,w}=1\) ,我们就发现
\[\max \left\{f\times(y_n-y_1)-\sum_{(v, w)} z_{v w}\right\}
\]
是可以求出来的了。(怎么求?对偶回去用费用流求解。\(f\) 是某一个流量(不一定要最大)。)
设某一个方案求出来的是 \((f,cost)\) ,\(\sum_{(v, w)} z_{v w}=x_i\) (即为询问),那么就有 \(y_n-y_1\le {cost+x\over f}\) 。取卡得最紧的即为答案。
为什么?可以看做法 1 。
也可以考虑设 \(D=y_n-y_1\) ,然后用这种方法求出 \(\sum z\) 的最小值,和 \(x_i\) 比较。本质上应该是一样的。
做法 1
设答案的下界为 \(D\) ,边权增长量为 \(a_{u,v}\) ,原边权为 \(w_{u,v}\) ,给每一个点定的最短路为 \(d_u\) ,那么如果能求出
\[\min \left\{\sum_{(u, v) \in E} a_{u, v}\right\} \\
\left\{\begin{array}{l}
d_{u}-d_{v}+a_{u, v} \geq-w_{u, v} \\
d_{n}-d_{1} \geq D \\
d_{i} \geq 0, a_{u, v} \geq 0
\end{array}\right.
\]
且这个 \(\min\le X\) ,那么 \(D\) 就是合法的。
线性规划转对偶问题,给一条边的限制定一个变量 \(b_{u,v}\) ,给 \(d_n-d_1\ge D\) 的限制定一个变量 \(f\) ,那么有
\[\max \left\{D \times f-\sum_{(u, v) \in E} w_{u, v} \times b_{u, v}\right\} \\
\left\{\begin{array}{l}
\sum_{i} b_{u, i}-\sum_{i} b_{i, u} \leq 0 \quad u \neq 1, n \\
\sum_{i} b_{1, i}-\sum_{i} b_{i, 1}-f \leq 0 \\
\sum_{i} b_{n, i}-\sum_{i} b_{i, n}+f \leq 0 \\
0 \leq b_{u, v} \leq 1,0 \leq f
\end{array}\right.
\]
同样可以看出这像是一个费用流。事实上这大概就是做法 0 倒过来……
做法 2
懒得写了……放个链接:https://www.cnblogs.com/Tiw-Air-OAO/p/13154586.html