zoukankan      html  css  js  c++  java
  • 整体二分

    前置芝士

    整体二分就是二分的进阶版

    类似于cdq分治(毕竟都是分治嘛)

    算法流程

    对于一些问题,我们回答一个询问的时候,我们可以先O(n)预处理,然后二分回答。

    但是如果有m个询问呢?我们不能对每个询问都做一遍预处理。

    此时我们需要发扬一下懒人思想:预处理中的某些处理是否可以多次利用(也就是处理一次, 但对多个询问的二分有用)?

    这时候就需要把所有的询问一起二分(so call 整体二分),才有可能实现上边的懒人思想。

    P3527 [POI2011]MET-Meteors为例学习整体二分,建议配合代码食用

    学习题解点这里

    上边这个只建议学思路,不建议学写法

    带修改区间第k小数

    带修改区间第k小数的一个神奇思路:整体二分

    有树套树我不用就用整体二分,就是玩~

    还是二分答案,比mid小的看做1,大的看做0,用树状数组维护

    时间这一维直接顺着来就行了,判断一个询问往左还是右分:判询问区间(就是输入的那个,不是答案(二分)区间)中小于mid的数(即"1")的个数,和k比较一下就行

    可以看看chen_zhe的题解

    说实话,我挺推荐他这种写整体二分的写法的

    总结

    在此借花献佛,看一下《浅谈数据结构题的几个非经典解法》(许昊然)中的介绍

    所谓整体二分,需要数据结构题满足以下性质:
    1. 询问的答案具有可二分性

    1. 修改对判定答案的贡献相对独立,修改之间互不影响效果

    2. 修改如果对判定答案有贡献,则贡献为一确定的与判定标准无关的值

    3. 贡献满足交换律,结合律,具有可加性

    5. 题目允许离线操作

    练习题目

    P1527 [国家集训队]矩阵乘法 裸题,多了一维而已,连修改都不用

    P3332 [ZJOI2013]K大数查询 练整体二分的一道比较基础的题目

    P7424 [THUPC2017] 天天爱射击 和P3527 [POI2011]MET-Meteors不能说毫不相干,只能说一模一样

  • 相关阅读:
    linux下socket编程-TCP
    python正则表达式练习篇2
    python正则表达式练习篇
    python正则表达式基础篇
    Jmeter应用初步介绍
    数据库清除重复数据
    Nginx 获取真实 IP 方案
    Mac 实用工具bash-comletion介绍安装
    MySQL的binlog数据如何查看
    Mybatlis SQL 注入与防范
  • 原文地址:https://www.cnblogs.com/wljss/p/14972286.html
Copyright © 2011-2022 走看看