简要题意
在段 \([1, n]\) 上建立防御塔,每个位置都可以建立任意多个,第 \(i\) 个位置的费用为每个 \(C_i\)。给出 \(m\) 个限制,形如区间 \([L_j, R_j]\) 内至少总共有 \(D_j\) 个防御塔。问最小代价。
数据范围:\(1\le n\le 1000, 1\le m\le 10000\)。
题解
设第 \(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\} \]\[\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*} \]最大费用流问题的对偶:
考虑点 \(u\) 的流出减流入等于 \(d_u\),一条边 \(e_k = (u_k, v_k, c_k, w_k)\),流量为 \(f_k\)。则最大费用流形如:
\[\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 \]即:
可以解决许多线性规划问题
那么费用流模型即为:点集 \(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。
标签:le,ZJOI,limits,min,align,ge,战线,sum,2013 From: https://www.cnblogs.com/kyeecccccc/p/17388128.html