排序

总结:对于你不需要知道的数据,维护你[horse]呢

容易发现,我们只需要查询第(q)位置上的数字的值。

于是我们可以将数字转换成大于等于(q)(ig(1ig))和比(q)小的(ig(0ig))

对于每一个线段树的节点,需要维护以下信息:

  • 懒标记:这个区间需要被改成什么样子
  • 有多少个(0)

当我们要修改一个节点(这个节点的区间为(ig[l,rig])的时候:

  • 那么问题就转化成了Update(l,l+cnt0,0),Update(l+cnt0+1,r,1) (升序)
  • 降序同理

线段树区间覆盖,区间询问(0)个数

然后套上个二分:

显然的,对于两个二分值A1,A2,满足A1<A2,那么CNT1>CNT1'于是这个点的权值就能通过二分判定了.

原文地址:https://www.cnblogs.com/guodongLovesOi/p/12040321.html