• [学习笔记]动态点分治


    首先要会点分治

    点分治——树上路径统计

    点分治有什么好处?我们为什么不直接用树形dp?

    它多用了一个logn的代价,使得我们每次面对的都是过重心rt的路径。

    这样,我们可以灵活用子树来处理。

    而树形dp必须一次考虑所有过x的所有路径。必须还要多处理一个“和x有关”的信息,多了O(n)的时空。

    点分治由于同一层不用考虑其他路径,所以复杂度和思维含量大大降低。

    (分治都是这样干的。。)

    然后需要修改。

    动态点分治出现。

    Qtree4——动态点分治

    [ZJOI2015]幻想乡战略游戏——动态点分治

    基本处理思想是,先点分治一遍找到分治树结构。

    每个分治树上的点维护一些信息。

    一般包括:自己管辖区域路径过自己的信息(这个是为了统计答案需要),和自己管辖区域对分治树father的影响(这个是为了更新迅速、拆解方便、不重复统计等。因为自底向上更新,只有一个father。不用枚举保存father的子树)

    (子树的并不用维护,因为每次修改查询自底向上会处理到)

    (我)经常还用的数组是:dis[x][d],x到深度为d的father的距离。以及dep[x]x分治树的深度。

    修改一般都自底向上修改。复杂度基于分治树高度的logn

    查询差不多。

    关键是处理好信息的维护。

    分治的关键是:

    1.可以有针对性地处理当前贡献。都是过mid的点对等等。

    2.情况独立于其他的分治树节点。即划分子问题思想。这也为动态分治的方便维护打下坚实基础。

    3.层数的logn加上情况独立,使得总复杂度是O(nlogn),本质上的节省统计次数,在于当前层的合并有针对性,

    可以左右许多东西,利用乘法原理,乘法分配律,交换律,一起统计。

  • 相关阅读:
    一个用户下表、批量授予权限给另一个用户
    查询表使用率
    查询临时表空间大小及压缩空间大小
    创建表空间
    About SSDT BI
    在Win8中用批处理创建Oracle数据库时报“Unable to open file”
    收藏网址
    shell输入与输出功能
    shell变量类型和运算符
    shell文件权限和脚本执行
  • 原文地址:https://www.cnblogs.com/Miracevin/p/10038984.html
Copyright © 2020-2023  润新知