码迷,mamicode.com
首页 > 其他好文 > 详细

整体二分

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

标签:二分   答案   href   这一   work   队列   结构   problem   顺序   

整体二分

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

整体二分

标签:二分   答案   href   这一   work   队列   结构   problem   顺序   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!