整体二分

Posted guodonglovesoi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整体二分相关的知识,希望对你有一定的参考价值。

整体二分

如果单个询问可以通过二分答案来解决(例如查询 k 大数),那么我们就可以试着把所有询问都一起二分。这个算法就叫整体二分。

模板:

void Work(int L,int R,int l,int r)  // 当前二分的询问队列,当前二分的值域。
{
        if(l==r)
        {
                // 那么这段队列的答案就是l
        }
        for(int i=l;i<=mid;++i) // 对当前的值域操作,通常需要借助数据结构
        for(int i=L;i<=R;++i)
        {
                // 判断这个询问是否可行,要加入可行(t1)还是不可行(2)
        }
        // 撤回操作。
        Work(t1),Work(t2);
}

对于加入哪个队列这一操作,常见的有三种写法:

  1. https://www.luogu.com.cn/problem/P1527 记录答案(最好用)
  2. https://www.luogu.com.cn/problem/P4602 有顺序的修改
  3. https://www.luogu.com.cn/problem/P3527 修改原先答案

以上是关于整体二分的主要内容,如果未能解决你的问题,请参考以下文章

整体二分

整体二分QAQ

POJ2104 K-th Number(整体二分)

整体二分初步

静态区间第k小 - 整体二分

bzoj 3110 [Zjoi2013]K大数查询 整体二分