十三连测8C
http://mna.wang/contest/426/problem/3
操作不重要。直接对最终选取局面做即可。
发现唯一的约束即为对于任意前缀,\(a\) 选取的数量不少于 \(b\)。
贡献很简单,显然可以费用流。
考虑如何模拟费用流优化。我们发现选 \(k\) 个的限制很烦人,不妨把他去掉,使用 wqs 二分即可。
之后考虑对于最小费用可行流该如何反悔贪心,有三种决策:
- 直接选取当前 \(a_i,b_i\)。
- 找到之前未选取的最小的 \(a_j\),将其和 \(b_i\) 匹配。
- 找到之前已选取的最大的 \(b_j\),将其替换为 \(b_i\)。
使用两个堆即可维护,时间复杂度 \(O(n\log ^2n)\)。
难点在于想到两个算法。操作转局面。