首页 > 代码库 > [整体二分]【学习笔记】【更新中】

[整体二分]【学习笔记】【更新中】

先小结一下吧

主要为个人理解


 

整体二分

理解

$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$分治

 

其他

整体二分和二分答案一样将原始问题转化为了判定问题,只不过是一次把所有询问二分答案,然后用分治的手段处理

很像加了一维权值(答案)的限制

所以偏序问题中那些手段都可以用

比如一系列修改操作和查询操作,整体二分了权值,时间这一维只要排序就行了

 

[整体二分]【学习笔记】【更新中】