【题解】CF1601C 贪心、线段树、复杂度均摊

题目链接

考虑将点对拆成三类:

  • \(a\) 序列之间的点对

  • \(b\) 序列之间的点对

  • \(a\) 序列与 \(b\) 序列之间的点对

对于第一类点对,其逆序对数是唯一确定的,对于第二类点对我们直接将其排序后可以逆序对数达到下界 \(0\) ,因此要最小化的即第三类点对。

将序列 \(b\) 排序,如果我们将 \(b_i\) 插到 \(a_j\) 前面,那么增加的逆序对数为 \(1\sim j-1\) 中大于 \(b_i\) 的数的个数加上 \(j\sim n\) 中小于 \(b_i\) 的数的个数。

线段树维护即可。

代码记录

posted @ 2021-11-03 14:58  Themaxmaxmax  阅读(33)  评论(0编辑  收藏  举报