zoukankan      html  css  js  c++  java
  • 动态点分治总结

    动态点分治总结

    标签: 动态点分治


    其实也没有做很多道题,但是还是总结一波吧.......

    要知道动态点分治,首先得知道点分治.

    点分治就是对于一个联通块,求出这个联通块的重心,然后把这个联通块分为很多个联通块,这些联通块都为这个重心的子树,那么求出这些子树对于重心的贡献,然后递归地做下去,由于重心的每一棵子树大小都小于联通块的一半,那么可以达到快速求解的目的.

    动态点分治,在点分治的基础上,利用分治的过程重新构建一颗点分树,那么每一次修改都只会影响到点分树上的父亲节点,重新计算对于这些节点的贡献即可,由于点分树的高度是严格log的,那么每一次修改都只需要修改log个节点的贡献.

    在修改的过程中,动态点分治可以十分灵活,不过不可避免的要写个求LCA,个人的习惯是写树链剖分,因为复杂度不是满的.对于维护,可以有很多种维护方式,通常都需要维护联通块到自己这个重心,和父亲重心的贡献,至于用什么来维护,根据题目而定,像线段树(动态开点),堆,数组等都是可以的.

  • 相关阅读:
    python-Beautiful rose
    python-and和 or用法
    myspl数据库基础
    python 协程
    python-os 模块
    python-logging模块
    异常处理
    面向对象-类中的三个装饰器
    Flask初见
    django中的ContentType使用
  • 原文地址:https://www.cnblogs.com/gzy-cjoier/p/8297783.html
Copyright © 2011-2022 走看看