* 【学习笔记】(25) 可持久化数据结构
摘要:
可持久化线段树(主席树) 主席树,一个数据结构,能访问到历史版本的数据,常用于可持久化和区间k大值,是线段树的一个升级版。 可持久化的意思是可以访问任意版本的数据,一眼想到的暴力做法就是开n个数组来记录,这显然是不可取的。 那么我们考虑优化。若只有单点修改,不难发现每两个版本的差别最多为1,那么我们
【学习笔记】(24) 虚树
摘要:
虚树常常被使用在树形dp中,当一次询问仅仅涉及到整颗树中少量结点时,为每次询问都对整棵树进行dp在时间上是不可接受的。此时,我们建立一颗仅仅包含部分关键结点的虚树,将非关键点构成的链简化成边或是剪去,在虚树上进行dp。 虚树包含所有的询问点及它们之间的lca。显然虚树的叶子节点必然是询问点,因此对于
*【学习笔记】(21) Prufer 序列
摘要:
## Prufer 序列 Prufer 序列可以将一个带标号 个节点的树用 中的 个整数表示,即 个点的完全图的生成树与长度为 值域为 的数列构成的双射。 Prufer 序列可以方便的解决一类树相关的计数问题,比如凯莱定理:$n
*【学习笔记】(3) 动态DP
摘要:
动态 DP 简称 DDP(Dynamic Dynamic Programming),其本质是用 矩阵 维护带修改的动态规划问题。 # 1.算法介绍:树链剖分写法 ## 模板:[P4719 【模板】"动态 DP"&动态树分治](P4719) > 给定一棵 个点的树。 号点的点权为 $a_
【学习笔记】(22) 点分治
摘要:
点分治就是把分治搬到了树上,其核心思想仍然是分治:将问题经过处理后,转化为同类型的,规模更小的问题求解。 # 静态点分治 ## Ⅰ.[P3806 【模板】点分治1 ](https://www.luogu.com.cn/problem/P3806) 题意:给定一棵带权无根树,问是否有点对的距离为 $k
*【整理】一些基础板子
摘要:
一些基础板子,不打算新开一篇学习笔记,就都整理在这里。 # Ⅰ.LCA ## 1.倍增 预处理和单次查询的复杂度分别为 和 ,空间 。 倍增预处理 2^k f_{i,k} d_i$ 。
*【学习笔记】(10) 块状链表
摘要:
# 块状链表(尚未完善) 对于线性表,可以 的访问,但是插入和删除操作是 对于链表,可以 的进行插入和删除,但是是 的访问。 于是本着分块的思想,有了块状链表 。 大概长这个样子。每个块的大小数量级在 , 块数的量级
*【学习笔记】(23) 常用距离算法详解
摘要:
本文主要讲述这三种常见距离算法 :欧氏距离,曼哈顿距离,切比雪夫距离 。 ## 1.欧氏距离 **欧氏距离** 是最易于理解的一种距离算法。在数学的平面直角坐标系中,设点 的坐标分别为 ,求点 之间的距离,我们一般会使用如下公式:
【比赛】8.16
摘要:
## Ⅰ.LYK loves string  通过限定元素的先后可以将 优化成 ,再加
*【学习笔记】(19) 启发式合并
摘要:
# 启发式合并 启发式合并核心思想就一句话:把小集合的合并到大的里。 启发式合并思想可以放到很多数据结构里,链表、线段树、甚至平衡树都可以。 考虑时间复杂度,设总共有 个元素,由于每次集合的大小至少翻倍,所以至多会合并 次,总的复杂度就是 的(结合线段树合