首页 > 其他 > 详细

整体二分

时间:2020-02-02 20:20:18      阅读:77      评论:0      收藏:0      [点我收藏+]

整体二分

如果单个询问可以通过二分答案来解决(例如查询 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 修改原先答案

整体二分

原文:https://www.cnblogs.com/guodongLovesOi/p/12253133.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!