首页 > 其他分享 >长链剖分笔记

长链剖分笔记

时间:2024-07-15 22:08:08浏览次数:16  
标签:长链 log 剖分 链剖分 祖先 top 笔记 dp

与轻重链剖分相似.

dfs1:高度 \(h\)、\(son\);dfs2:\(top\).

性质 1:到根最多 \(O(\sqrt n)\) 条轻边. (证明:长链长度最坏情况:1, 2, 3...)

性质 2:\(x\) 的 \(k\) 级祖先 \(y\) 所在的长链长度 \(\ge k\).(证明:若非,则 \(y-x\) 是一条更长的链,矛盾.)

树上 \(k\) 级祖先 \(O(n\log n)-O(1)\):每个点 \(i\) 处理倍增跳祖先数组 \(f(i,j)\),链顶 \(i\) 处理向下 \(h_i\) 个点(长链上)、向上 \(h_i\) 个点.

询问 \((x,k)\):令 \(y=f(x,\log k)\),问题转化为求 \(z=(y,k-2^{\log k})\);\(z\) 一定在 \(top(y)\) 内存储,根据深度判 \(z\) 是 \(top(y)\) 的祖先 / 后代. 就 \(O(1)\) 了.(性质 2 易证)

优化树上以深度为状态的 dp:套路:继承重儿子,合并轻儿子. 复杂度要为长链长度之和相关 \(=O(n)\).

Q:为什么不用轻重链剖分像这样优化 dp?

A:因为长剖使对于每个点 \(u\) 按这样算出来的 dp 数组的深度维总是达到了子树高度的上限、是对的,而重剖不一定,这样正确性就假了;且重剖不一定满足从每个点往上跳,链长总是递增的.

什么?你要例子?比如说这个:

image

例题,分散放其他地方。

标签:长链,log,剖分,链剖分,祖先,top,笔记,dp
From: https://www.cnblogs.com/laijinyi/p/18304076

相关文章

  • 最爽手撕算法个人笔记【第一周-数组】
    27.移除元素给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为k,要通过此题,您需要执行以下操作:更改nums数组,使nums的前k个元素包含不......
  • 网络安全相关的一些学习笔记
    网络安全?本文主要为《计算机网络》网络安全章节的学习笔记,也包括部分来自其他博客与网站的段落。1.一些名词解释密码编码学(cryptography):密码体制的设计学密码分析学(cryptanalysis):在未知密钥的情况下从密文推演出明文或密钥的技术上述二者合称密码学(cryptology)无条件安全(理......
  • 设计模式之装饰模式(学习笔记)
    定义装饰模式(DecoratorPattern),又称为包装模式,是一种结构型设计模式。它允许在不改变现有对象结构的情况下,动态地添加新的功能。通过将每个功能封装在单独的装饰器类中,并且这些装饰器类通过引用原始对象来实现功能的组合,从而提供了灵活性和可扩展性的优势。装饰模式避免了通过继......
  • 矩阵优化 DP 以及全局平衡二叉树实现的动态 DP 学习笔记
    矩阵乘法求斐波那契数列的第\(n\)项,其中\(n\le10^{18}\),对数\(m\)取模。写出转移方程,\(f_i=f_{i-1}+f_{i-2}\),直接算是\(O(n)\)的,似乎没什么办法优化。定义大小分别为\(n\timesp\)和\(p\timesm\)的矩阵(分别为\(a\)和\(b\))相乘的结果(矩阵\(c\))是一个大小为\(......
  • IP协议学习笔记
    目录IP地址格式IP分类CIDR和子网掩码介绍NAT+公网、私网地址CIDR与VLSMVLSM子网划分案例练习ReferenceIP的作用类似物理世界中的地址,用于定位机器的位置。只不过物理的地址是文字描述,计算机世界的IP是一串二进制数,并且它是有一定约定和规则的。下面我来学习关于IP的一些历......
  • 论文阅读笔记-LSM-bush
    首先介绍前置工作。缩写缩写全称FPRfalsepositiverate符号符号含义单位NtotaldatasizeblocksFbuffersizeblocksLnumberoflevelsM所有bloomfilter的平均bitsperbitbitspsumofFPRsacrossallBloomfilters$p_i$......
  • Docker学习笔记
    安装不要安装debian自带的docker:sudoaptinstalldocker-compose。debian11和debian12安装的都是v1,没有dockercompose命令。用官网的安装方式:https://docs.docker.com/engine/install/debian/#install-using-the-repository创建imagehttps://docs.docker.com/reference/cl......
  • 【笔记】Nmap工具原理探索
    【笔记】Nmap工具原理探索原文章:【THM】Nmap(Nmap工具使用简介)-学习-Hekeatsll-博客园(cnblogs.com)Nmap是一款跨平台的开源端口扫描软件,它用来扫描计算机的开放端口,以确定运行的网络服务,并推断出计算机运行的操作系统Nmap三种基本扫描类型TCP连接扫描(-sT)工作原理:通过......
  • 数据结构学习笔记——线性表
    链表1.单链表链表的插入:    (1)需要知道插入位置的前驱结点(从表头顺序遍历)    (2)先修改要插入的结点(新结点)的指针    (3)再修改前驱结点的指针链表的删除:    (1)要知道删除结点的前驱结点(从表头顺序遍历)    (2)只需要修改前驱结点的指......
  • 支配树学习笔记
    先抛出一个问题:给一个有向图,问从\(1\)节点出发,求每个节点的受支配集。这里,支配的定义为:若从\(1\)结点出发到\(v\)节点的所有路径中,都必须经过\(u\)节点,则称\(u\)支配\(v\)。那么受支配集意思就是对于\(v\)点满足条件的\(u\)点的集合。那么根据支配的定义,我们可以......