zoukankan      html  css  js  c++  java
  • [整体二分]【学习笔记】【更新中】

    先小结一下吧

    主要为个人理解


    整体二分

    理解

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

    其他

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

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

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

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

  • 相关阅读:
    THINKPHP3.2视频教程
    PHPCMS 学习
    PHPCMS 后台学习
    phpcms 模板学习
    二叉树的创建与遍历(链式存储)
    MySQL基础~~增、删、改、简单查
    队列的基本操作(链队列)
    MySQL基础~~表结构操作
    行编辑程序
    循环链表的基本操作
  • 原文地址:https://www.cnblogs.com/candy99/p/6464068.html
Copyright © 2011-2022 走看看