整体二分
整体二分也是一种非常妙的分治算法。
大致流程:
-
记\(solve(l,r,x,y)\)表示\([x,y]\)这些询问,他们的答案范围在\([l,r]\)内,并设\(mid\) 为\([l,r]\)的中点
-
我们先把\([l,mid]\)内的影响计算,再对每个询问:若此询问已经满足要求,则他们所属答案区间为\([l,mid]\),否则更新此询问,然后把它放进\([mid+1,r]\)中
大致就是这个意思~
时间复杂度的保证多靠一些均摊,有的时候复杂度不一定对,所以看到一些题的时候应该事先分析好复杂度再使用整体二分。
例题:
由于博主比较菜,所以有很多东西待学习,大部分文章会持续更新,另外如果有出错或者不周之处,欢迎大家在评论中指出!