十三连测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)\)

难点在于想到两个算法。操作转局面。

posted @ 2024-01-02 21:09  ydtz  阅读(78)  评论(0编辑  收藏  举报