码迷,mamicode.com
首页 > 其他好文 > 详细

动态点分治总结

时间:2018-01-17 00:11:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:树链剖分   lca   基础   多个   markdown   需要   down   节点   分治   

动态点分治总结

标签: 动态点分治


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

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

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

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

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

动态点分治总结

标签:树链剖分   lca   基础   多个   markdown   需要   down   节点   分治   

原文地址:https://www.cnblogs.com/gzy-cjoier/p/8297783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!