CCPC 2026 Changchun B. 别样的选课大战
首先对于日期与时段的二元组可以直接转为 \(1\sim n\times m\) 的编号。
假设先不考虑最小权值,就判定能否找出合法选择,会发现这就已经是一个二分图匹配的形式了。于是这个题大抵是无法与流无关的,尝试用最小费用最大流刻画。
并且对于 \(q_{\operatorname{lca}(u, v)}\) 可以去拆贡献,记 \(q'_{u} = q_{u} - q_{fa_{u}}\),那么 \(\operatorname{lca}(u, v)\) 到根的 \(q'\) 和就是 \(q_{\operatorname{lca}(u, v)}\) 的值。
于是记点 \(u\) 被经过了 \(c_{u}\) 次,总费用就可以写为 \(\sum_{u} q'_{u}\binom{c_{u}}{2}\) 的形式。
对于非费用相关的边是好连的:
- 限制一下流量为 \(K\):\((S, S', K, 0)\)。
- 时间与叶子的二分图:\((S', t_{i}, 1, 0), (t_{i}, in_{u}, 1, 0)\)(这里的 \((t_{i}, in_{u})\) 的连边需要 \(u\) 叶子可以与 \(i\) 时刻匹配)。
- 叶子只能被选 \(1\) 次:\((in_{u}, out_{u}, 1, 0)\)(\(u\) 为叶子)。
- 向根走:\(\left( out_{u}, in_{fa_{u}}, K, 0 \right)\)。
接下来主要难处理的就是带费用的边,因为贡献系数是 \(\binom{c_{u}}{2}\) 的形式,如果想要暴力拆边拆出来的就是 \((in_{u}, out_{u}, 1, (0\sim K)\times q'_{u})\) 共 \(k\) 条边,总边数就是 \(\mathrm{O}((W + H)K)\) 级别的了,肯定是不能接受的。
但是考虑到最小费用,所以 \((in_{u}, out_{u})\) 流过的边一定是前缀的费用为 \((0\sim f_{u})\times q'_{u}\) 的边,那么如果要正向流(\(in_{u}\to out_{u}\))选择的边就一定会是 \((f_{u} + 1)\times q'_{u}\),反向流选择的边就一定会是 \(-f_{u}\times q'_{u}\)。
于是实际跑网络流是对于 \((in_{u}, out_{u})\) 的边只需要保留 \((in_{u}, out_{u}, 1, (f_{u} + 1)\times q'_{u}), (out_{u}, in_{u}, 1, -f_{u}\times q'_{u})\) 两条边(初始时 \(f_{u} = -1\),若 \(f_{u} = -1\) 则没有反向边)。
并且此时依然可以用原始对偶的办法跑网络流。
对于没流过的边边权不变的分析是相同的。对于流过的不妨假设其是正向边,有 \(dis_{u} + (h_{u} + (f + 1)\times q' - h_{v}) = dis_{v}\),即 \((dis_{u} + h_{u}) + (f + 1)\times q' = (dis_{v} + h_{v})\),于是对于下次的反向边 \((v, u, 1, -(f + 1)\times q')\) 会取等,正向边 \((u, v, 1, (f + 2)\times q')\) 是大于号。
也即,流过的一侧下一次的边权只会更大一定满足,没流过一侧下一次的边权就是当前边权的相反数,所以取等依然满足。
(费用关于 \(c_{u}\) 依次拆出来的每条边费用是不降的时就可以这么用,如果不满足好像费用流都跑不了。)
记 \(N' = W + H + NM\),时间复杂度为 \(\mathrm{O}(N'K\log N'K)\)。
对于本题初始可行边边权均为 \(0\),不需要跑 spfa 预处理势能 \(h\),不过跑了这部分也是线性的。
如果拆成 \(in_{u}, out_{u}\) 常数有点大可能跑不过去,可以把两个点缩在一起,把费用融合到向根走的边里。
gpt 大哥教我的原始对偶卡常方法(但是在这题是负优化,不知道为什么):跑出 \(dis_{T}\) 后直接停止,更新势能时 \(h_{u}\) 增量变为 \(\min(dis_{u}, dis_{T})\)。
证明就是记 \(\Delta_{u} = \min(dis_{u}, dis_{T})\),则边 \((u, v)\) 在势能下的边权增量为 \(\Delta_{u} - \Delta_{v}\),若 \(dis_{u}\ge dis_{T}\),则因为 \(\Delta_{u} = dis_{T}\ge \Delta_{v}\),所以增量不降;若 \(dis_{u} < dis_{T}\),可以代入三角不等式的正常分析,且因为 \(\Delta_{v}\le dis_{v}\),增量只可能更大。

浙公网安备 33010602011771号