你:“woc这个树套树细节怎么这么多?”
某dalao:“什么题让我看一看……这不cdq裸题吗?”
你:“???…”
你:“woc这三百行的代码怎么调啊?”
某dalao:“emmm,我的才一百不到啊?”
你:“???求教怎么写的”
某dalao:“整体二分直接做啊”
你:“???…”
整体二分
前置知识:二分答案(等于没说)
先来看一道经典题吧
k-th num
题意:给你一个序列,每次询问一个子序列内的第k大的值
我们先来看如果只有一次询问该怎么做。
考虑使用二分答案二分出答案域[l,r],该怎么检查?
可以直接暴力扫一遍区间,统计一下大小在[l,mid]里面的个数,
如果大于k的话就说明答案一定在[l,mid]里面,令r=mid,继续二分。假如大小在[l,mid]里面的个数小于k,就说明答案在[mid+1,r]里面,令l=mid+1继续二分即可。
以上的二分都是基础,想必大家都是没什么问题。
但是如果想要多组询问该怎么做呢?肯定不能每组询问都扫一遍,