首页 > 其他分享 >点分树(动态点分治)学习笔记

点分树(动态点分治)学习笔记

时间:2024-04-17 11:44:46浏览次数:31  
标签:重心 分治 笔记 3.2 点分树 lca logn

1. 定义

在点分治的基础上加以变化,构造一颗支持快速修改的重构树,称之为点分树

2.算法

2.1. 思路

点分治的核心在于通过树的重心来划分联通块,减少合并层数,从而降低时间复杂度

所以,我们可以按分治递归的顺序提出一颗树,易知树高至多为logn

具体的说,对于每一个找到的重心,将上一次分治时的重心设为其父亲,就可以得到一颗logn层的虚树(重构树)

举个例子,原树为:

新树为:

此时,有一个性质,所有子树的子树大小之和为nlogn

证明:每个点会被从根到它的路径上最多logn个祖先所统计,所以必然小于nlogn

所以在新树上修改,只需要暴力儿子跳父亲即可

2.2. 应用

统计一个点到其他点的点权和,即\(\sum_{y=1}^n dis(x,y)\),对于任意一个y,找到它与x在虚树上的lca,易知在以此点为重心划分子连通块时x,y会首次被分割开来,因此该点必定在原树的x,y路径上。

所以我们只需要在这些lca的虚子树中寻找y即可,此时记录虚子树信息的作用便显现出来了。

而对于一个x,可能的lca最多存在logn个,因此通常使用暴力枚举+简单容斥的方法来统计y的贡献。

3.具体实现

3.1. 例题:P6329 【模板】点分树 | 震波

oj:https://gxyzoj.com/d/gxyznoi/p/P17

题意:维护一颗带点权树,需要支持两种操作:修改x的点权,查询与点x距离不超过k的点权值之和。

3.2. 思路

3.2.1. 建树

在找到第一个重心rt后,先遍历得到整颗树的信息,然后删除rt,再递归处理其他联通块

操作和点分治基本相同,但是将统计答案变为统计子树信息

3.2.2. 计算贡献

标签:重心,分治,笔记,3.2,点分树,lca,logn
From: https://www.cnblogs.com/wangsiqi2010916/p/18140232

相关文章

  • 「笔记」树同构
    目录写在前面树同构定义有根树同构无根树同构树哈希有根树无根树AHU算法例题UOJ#763.树哈希SP7826-TREEISO-TreeIsomorphismP5043【模板】树同构([BJOI2015]树的同构)写在最后写在前面vp的时候用到了于是来学一下。好水。抱歉了AHU,但是树哈希它实在是太好写了。树同......
  • ROS2笔记1--简介及开发环境搭建
    一、ROS2简介1.1、ROS2概述ROS2是第二代的RobotOperatingSystem,ROS1的升级版本,解决了ROS1存在的一些问题。与ROS1相比,Linux版本与ROS2版本的选择也有关系,对应关系如下:ROS2版本Ubuntu版本FoxyUbuntu20.04GalacticUbuntu20.04HumbleUbuntu......
  • 后缀数组学习笔记
    定义后缀从字符串某个位置i到字符串末尾的子串,定义s的第i个字符为第一个元素的后缀为suf(i)。后缀数组把s的每一个后缀按照字典序排序,后缀数组sa[i]表示排名为i的后缀的起始位置的下标。rk[i]数组代表起始位置为i的后缀的排名。rk[]和sa[]是一一对应关系,互为逆运算,可以相互......
  • 《线性代数的本质》笔记(09)
    09-基变换基向量不同,则相同坐标的向量实际上并不是同一个。将新的基向量看作是线性变换,则其列应该是原本的基向量现在的位置。将一个新坐标系下的向量a(x,y)转换到我们的坐标系中:用这个矩阵乘以这个向量。原因:用两组基向量分别表示向量在两个坐标系下的位置,则结果应该是相同的。所......
  • day14_我的Java学习笔记 (常用API、Lambda、常见算法)
    1.常用API1.1Date类【案例】:计算出当前时间往后走1小时121秒之后的时间是多少。1.2SimpleDateFormat【练习】:秒杀活动1.3Calendar2.JDK8新增日期类2.1概述、LocalTime/LocalDate/LocalDateTime2.2Ins......
  • day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、fin
    1.包IDEA配置自动导包:2.权限修饰符同一个类中的,【private、缺省、protected、public】都可以访问同一个包中的其他类,【private】不可以访问,【缺省、protected、public】都可以访问不同包下的无关类,【private、缺省、protected】都不可以访问,只有【public......
  • 笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2
    对应于其强大的能力,大语言模型(LLM)需要强大的算力支撑,而个人计算机上很难满足这一需求。因此,我们别无选择,只能将它们部署至由本地或云端托管的性能强大的定制AI服务器上。为何需要将LLM推理本地化如果我们可以在典配个人计算机上运行最先进的开源LLM会如何?好处简直太......
  • 模型微调-书生浦语大模型实战营学习笔记&大语言模型5
    大语言模型-5.模型微调书生浦语大模型实战营学习笔记-4.模型微调本节对应的视频教程为B站链接。笔记对视频的理论部分进行了整理。大模型的训练过程模型视角这里原视频用的“分类”这个名字,我看到的时候还有点懵......
  • Java 常用笔记
    问题1org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'jobConfParser'definedinclasspathresource[com/cxytiandi/elasticjob/autoconfigure/JobParserAutoConfiguration.class]:Initializationofbeanfailed;n......
  • 笔记:OpenCV3和Qt5 计算机视觉应用开发(一)
    目标:学习《OpenCV3和Qt5计算机视觉应用开发》,记录总结学习过程。第一章OpenCV和Qt简介开发环境系统版本:Ubuntu16.04.7LTSQt版本:Qt5.9.5OpenCV版本:opencv-3.3.0虚拟机版本:VMware®Workstation16Pro(16.2.2build-19200509)学习总结1,安装Linux开发环境终端运行:sudoapt-get......