先小结一下吧
主要为个人理解
整体二分
理解
$zyz:$整体二分是在权值上进行$CDQ$分治
我觉得更像是说$:$整体二分是在答案上进行$CDQ$分治
整体二分是二分答案在数据结构题上的扩展
因为数据结构题二分的答案通常是第几个操作之后,需要进行一些操作(预处理)之后才能判断,所以每次询问二分还不如从前往后暴力找
整体二分可以解决这样的问题
核心就是维护一个$cur$数组保存当前的影响,分治到$[l,r]$时只需要计算$[l,mid]$的影响再与$cur$里的合并就好了
这样分治里的操作就只与当前处理序列的长度有关,要不然复杂度不对
将询问集合二分到底层
一般过程:
首先询问的答案要可以二分
然后影响因子(如修改操作)的贡献要具有可加性
$Sol(l,r,S)\ l,r$是当前权值(答案)区间,$S$是当前询问的集合,$S$中询问的答案都在$[l,r]$中
在$[l,mid]$中的影响因子生效(对答案贡献),与$cur$合并后进行判断将询问集合分成$[l,mid]\ [mid+1,r]$递归分治
实现上集合保存询问的编号就可以了
复杂度
同$CDQ$分治
其他
整体二分和二分答案一样将原始问题转化为了判定问题,只不过是一次把所有询问二分答案,然后用分治的手段处理
很像加了一维权值(答案)的限制
所以偏序问题中那些手段都可以用
比如一系列修改操作和查询操作,整体二分了权值,时间这一维只要排序就行了
时间: 2024-12-26 06:58:45