题解 [ARC129E] Yet Another Minimization
题解
显然是最小割建模。
首先,为了表示“若 \(X_i=A_{i,j}\) 则有代价 \(C_{i,j}\)”,给每个 \(i\) 建 \((m+1)\) 个点,记作 \(p_{i,1},p_{i,2},\dots,p_{i,m+1}\)。连边 \((S,p_{i,1},\infty),(p_{i,m+1},T,\infty)\)。对于每个 \(1\le j\le m\),连边 \((p_{i,j},p_{i,j+1},C_{i,j}),(p_{i,j+1},p_{i,j},\infty)\)。
绝对值不太好处理,考虑把 \(|x-y|\) 看作:对于每个整数 \(k\),若 \(\min(x,y)<k\) 且 \(\max(x,y)\ge k\),则有 \(1\) 的代价。那么后面的步骤应该是,枚举 \(1\le i,j\le n\land i\neq j\),然后用 \(m^2\) 条连边来描述若 \(X_i>X_j\) 则绝对值的代价是多少。
考虑最小割究竟在干什么:
给定源 \(S\),汇 \(T\),以及边集 \(E\),给每个点赋一个点权 \(x_u\in \{0,1\}\),最小化
\[\sum_{(u,v,w)\in E} w\cdot x_u(1-x_v). \]其中,一定需要有 \(x_S=1,x_T=0\)。
于是上面的建模中,\(p_{i,j}=1\) 则说明 \(X_i\ge A_{i,j}\)。
那么考虑 \(p_{i,x}\) 连向 \(p_{j,y}\) 的边,假如这条边有贡献,则说明 \(x_{p_{i,x}}=1,x_{p_{j,y}}=0\),也就是 \(X_i\ge A_{i,x},X_j<A_{j,y}\)。所以这条边的边权应该是 \(|(A_{i,x-1},A_{i,x}]\cap (A_{j,y-1},A_{j,y}]|\)。
这个建模中有 \(O(NM)\) 个点,\(O(N^2M)\) 条边,所以复杂度上界是 \(O(N^4M^3)\)。不过最慢的点也只跑了 15ms。

浙公网安备 33010602011771号