ZJOI2013 防守战线
简要题意
在段 \([1, n]\) 上建立防御塔,每个位置都可以建立任意多个,第 \(i\) 个位置的费用为每个 \(C_i\)。给出 \(m\) 个限制,形如区间 \([L_j, R_j]\) 内至少总共有 \(D_j\) 个防御塔。问最小代价。
数据范围:\(1\le n\le 1000, 1\le m\le 10000\)。
最大费用流问题的对偶
考虑一个最大费用流问题中,点 \(u\) 的流出减流入等于 \(d_u\),一条边 \(e_k = (u_k, v_k, c_k, w_k)\),流量为 \(f_k\) 是待规划的变量。则最大费用流形如:
\[\begin{align*}
\sum_{u_k = x}f_k - \sum_{v_{k'} = x}f_{k'} \le d_x\\
f_k\le c_k\\
\max\sum_k f_kw_k
\end{align*}
\]
它的对偶形式:
\[\begin{align*}
p_{u_k} - p_{v_k} + z_k \ge w_k\\
\min\sum_k c_kz_k + \sum_x d_xp_x\\
\end{align*}
\]
即:
\[\min\sum_k c_k\max\{0, w_k - p_{u_k} + p_{v_k}\} + \sum_x d_xp_x
\]
可以解决许多线性规划问题。
题解
设第 \(i\) 个位置有 \(A_i\) 个防御塔,考虑前缀和 \(S_i = \sum\limits_{j=1}^iA_j\),则问题转化为:
\[\begin{align*}
S_i \ge S_{i - 1},\\
S_{R_j} - S_{L_j-1} \ge D_j,\\
\min\sum\limits_{i=1}^n(S_i - S_{i-1})C_i
\end{align*}
\]
写成线性规划
\[\begin{align*}
S_i - S_{i-1}\ge 0,\\
S_{R_j} - S_{L_j-1} \ge D_j,\\
\min\sum\limits_{i=0}^n(C_i - C_{i+1})S_i
\end{align*}
\]
考虑费用流对偶,将上式写成:
\[\min\sum\limits_{i=0}^n(C_i - C_{i+1})S_i + \sum\limits_{i=1}^n\infty\cdot\max\{S_{i-1} - S_i, 0\} + \sum\limits_{j=1}^m\infty\cdot\max\{S_{L_j-1} - S_{R_j} + D_j, 0\}
\]
那么费用流模型即为:点集 \(0\dots n\) 第 \(i\) 个点流出减流入为 \(C_i - C_{i+1}\), 第 \(i\) 个点向 \(i-1\) 连代价为 \(0\) 流量无穷大的边,第 \(R_j\) 个点向第 \(L_j - 1\) 个点连代价为 \(D_j\) 流量无穷大的边。
认为 \(C_0 = C_{n+1} = 0\)。比较 trivial。
费用流板子比较烂,T了,后面再搞搞。

浙公网安备 33010602011771号