整体二分
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);
}
对于加入哪个队列这一操作,常见的有三种写法:
- https://www.luogu.com.cn/problem/P1527 记录答案(最好用)
- https://www.luogu.com.cn/problem/P4602 有顺序的修改
- https://www.luogu.com.cn/problem/P3527 修改原先答案
以上是关于整体二分的主要内容,如果未能解决你的问题,请参考以下文章