• 时间分治和整体二分总结


    时间分治(又叫cdq分治),是解决一类“贡献独立”、“支持离线”的数据结构问题的算法。

    假设有一个操作序列:ABAABAABBAAAB,其中每个A对其后面的B有一定贡献,要求输出每个B对应的答案。

    “贡献独立”是指:每个A对其后面的B的影响是不受其他A影响的,即是要我们用B前面的所有A更新过B,那么B的答案就是正确的。

    贡献独立的例子:max,min,sum,count(极值,和,满足某种条件的A的个数)。

    “支持离线”是指每个AB必须开始时就给出,有些问题(如维护凸壳优化DP),可能A和B是合在一起的,即受前面的东西影响,得到答案后再影响后面的东西,这个东西也可以做(虽然一开始它没有告诉我们每个对后面的影响是什么)。

    这样我们就可以将上面的问题变为:AAAABBBB的问题,这样我们就可以根据前面所有的A预处理出一些信息,然后去更新后面的B(主要)。

    整体二分:解决一些询问具有二分性的问题,但如果单个询问都去二分,那么为了一个询问有可能就需要进行一次预处理,时间不允许。

    整体二分就是共用一些预处理,然后同时二分所有询问,难点就在于共用什么信息以及怎么实现。

  • 相关阅读:
    MATLAB中的fopen、fclose、fprintf、fscanf、fread、fwrite
    网站制作中常用的一些网页布局
    更快学习 JavaScript 的 6 个思维技巧---分享
    根据数据生成列表
    动态生成随机背景色表格
    根据数据生成表单
    _鼠标移动跟随效果
    tab菜单事件
    全选 反选案例
    onresize的应用--自适应弹窗
  • 原文地址:https://www.cnblogs.com/idy002/p/4465428.html
Copyright © 2020-2023  润新知