整体二分入门

整体二分用于这样的问题:

  • 可离线
  • 询问答案可用二分+check得到,check内容为扫一遍询问之前的操作
  • 询问类型相同

考虑一个询问,如果二分答案之后得知答案区间在\([l,mid]\),那么\((mid,r]\)的修改在以后都不需要了。同样若答案区间在\((mid,r]\),那么把询问的要求减去前半部分的贡献后\([l,mid]\)的修改也不需要了。

这个过程是针对一个询问的,考虑对所有询问同时做这个。先将所有操作按时间排序,考虑分治操作序列,同时记录当前的询问和修改的值域区间。则我们先二分一个值,然后扫一遍序列,这样序列中所有询问都做了一次check。再按它们答案在哪边分为两个部分,方法同上一段所述。

复杂度\(O(n\log n)\)

posted @ 2018-10-10 21:02  Utoрia  阅读(129)  评论(0)    收藏  举报