NOI2019 序列

貌似直接考虑贪心(顺着加)相当困难,考虑费用流,大概就是开一条边允许 \(K - L\) 对点可以任意匹配,然后其他必须两两匹配,流 \(K\) 的最大权值。

注意到一个点有流了就无法撤回,因此问题就转化成只允许 \(K - L\) 组不匹配,每次增加一组权值最大的,贪心维护最优方案。

可以发现,可以任意流时一定任意流增量最大,否则有 2 类决策(增广路):

  • 直接新匹配一组 A, B;
  • A 选择一个对侧 B 已选的,然后 B 任选一个,B 中选一个是对称的;

其他情况(如匹配两对)可以上述情况包含。维护好当前的状态最少需要多少条“任意边”,用堆维护一些最大值即可每次 \(O(\log n)\) 增广。

posted @ 2022-07-28 23:25  RiverHamster  阅读(55)  评论(0编辑  收藏  举报
\