zoukankan      html  css  js  c++  java
  • 时间分治和整体二分总结

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

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

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

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

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

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

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

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

  • 相关阅读:
    vue报错 error: data.push is not a function
    vue elment.style样式修改(第三方组件自生成元素)
    按元素标签查询多个
    按css查询多个元素
    按CSS查询一个元素
    查询单个元素
    JavaScript 查找元素
    Spring 商品分类
    Spring 使用日志
    Spring 使用日期类型
  • 原文地址:https://www.cnblogs.com/idy002/p/4465428.html
Copyright © 2011-2022 走看看