随笔分类 -  数据结构

摘要:事实上比较朴素。 P6329 【模板】点分树 | 震波 大致思路是将点分治的那个过程建成一棵树。每一层的重心和下一层的中心连边。 这棵树有两个重要性质:树高保证为 \(\log n\),任意两点的 lca 一定在这两个点的路径上。同时,一个有趣的性质是一个点到其子树内所有点的距离都不超过这个点的子树 阅读全文
posted @ 2025-11-16 19:45 all_for_god 阅读(27) 评论(0) 推荐(0)
摘要:事实上是一种比较简单的思想。 一般解决数对计数之类的问题。有的时候也用来优化 DP 的转移。 基本思想是考虑将数对分成左右端点全在 \([l,mid]\) 中,左右端点全在 \([mid+1,r]\) 中,左端点在 \([l,mid]\) 右端点在 \([mid+1,r]\) 中三类。然后前两类递归 阅读全文
posted @ 2025-11-14 21:15 all_for_god 阅读(12) 评论(0) 推荐(0)
摘要:线段树分治的本质比较简单,一句话就可以说完: 线段树分治就是对时间维建线段树,将时间维上的区间操作在线段树上标记永久化。 P5787 二分图 /【模板】线段树分治 动态维护图是否是二分图可以通过 扩展域并查集 简单维护。(事实上这道题的难点可能在这个上面) 然后我们就将插入边的操作放到时间维的线段树 阅读全文
posted @ 2025-10-23 11:11 all_for_god 阅读(13) 评论(0) 推荐(1)
摘要:听起来玄乎,其实比较朴素的东西。 扩展域并查集是用来处理染色判定问题的一种工具。具体来说,对于一些问题,我们可能需要将一个图划分为一些不交的点集,然后保证这些点集内部的点之间没有互相连边。 一个典型的例子是二分图。事实上,一般而言扩展域并查集都只是用来做二分图的判定而已。 还是以判断图是否是二分图为 阅读全文
posted @ 2025-10-23 10:59 all_for_god 阅读(59) 评论(0) 推荐(1)
摘要:历史和的定义是每一次操作后每个位置上的历史和 \(h_i\) 都会累加上一个当前位置的 \(a_i\)。粗略的说就是给每一位加上了一个时间维 \(t\)。设 \(a_{i,t}\) 表示位置 \(i\) 上在第 \(t\) 次操作后的值,那么某次操作后的历史和 \(h_{i,t}=\sum_{j=1 阅读全文
posted @ 2025-10-21 14:22 all_for_god 阅读(46) 评论(0) 推荐(1)
摘要:顾名思义,动态区间子段和是维护区间子段和的算法,其复杂度一般是 \(n\log^3 n\) 级别的,但是基本上卡不满,基本上可以认为是 \(n \log^2 n\) 的。(毕竟 EI 本人都不太卡的满) P5693 EI 的第六分块 模板题。 操作是区间加和求区间最大子段和。这两个操作单独分开做的话 阅读全文
posted @ 2025-07-21 20:49 all_for_god 阅读(71) 评论(0) 推荐(0)
摘要:【模板】线段树 3(区间最值操作、区间历史最值) 所谓区间最值操作就是将一个区间中的所有值全部与一个给定的值取 \(\min\)。 区间历史最值就是字面意思,在之前任意时刻区间中的最大值。 这个题就是维护 5 种操作。 区间加、区间最小值操作、求区间和、求区间最大值、求区间历史最大值。 考虑区间最小 阅读全文
posted @ 2025-07-19 12:24 all_for_god 阅读(98) 评论(0) 推荐(0)
摘要:动态树是动态维护树与森林的信息的结构。可以在一个 $\log $ 的时间内快速动态维护各种操作,包括但不限于: 删除边 添加边 换根 求树上链的信息,如异或和,最大值等 修改树上某个点的值 模板 LCT 的全称是 Link-Cut-Tree,即可以连边删边的树。其动态维护的特性是基于 splay 这 阅读全文
posted @ 2025-05-21 17:06 all_for_god 阅读(165) 评论(0) 推荐(0)
摘要:根号算法一直以来被称为所谓“优美的暴力”。其大致思路是设定一个块长 \(len\) 。如果数据规模(包含操作与询问)小于等于这个块长就去暴力。如果大于块长,那假设可以快速处理或者给数据规模为 \(len\) 的操作或者询问打标记,那么就只需要处理 \(\frac{n}{len}\) 个这种区间。 可 阅读全文
posted @ 2025-05-09 21:45 all_for_god 阅读(510) 评论(0) 推荐(4)
摘要:考试的时候考的板子,但是我不会。 P4097 【模板】李超线段树 / [HEOI2013] Segment 修改:插入一条线段。查询:有某条竖直直线,与某些线段有交点,求交点最高的线段编号。相同高度输出编号小的。复杂度 \(n\log^2 n\)。 考虑线段树维护。线段树上的每个节点存下当前节点所对 阅读全文
posted @ 2025-03-17 09:29 all_for_god 阅读(44) 评论(1) 推荐(1)
摘要:(哪个天才想出珂朵莉树这种名字的) 一般颜色段都使用set来维护,记录颜色段左右端点以及区间的值,一般还有时间戳一类的东西。 其优点是按顺序自动排序、插入删除方便,可以快速找到相邻的颜色段,通过lower_bound之类的快速查找特定左右端点颜色段。 颜色段均摊则是指维护某种区间推平操作复杂度为 \ 阅读全文
posted @ 2025-02-28 22:05 all_for_god 阅读(228) 评论(0) 推荐(1)
摘要:树上问题实际上很杂,但是也不太好去分到其他的板块去,就大概写到一起了。 P4216 [SCOI2015] 情报传递 乍一看操作非常不好维护。但是发现题并没有要求在线,同时 \(c\) 是固定了,因此离线转化一下就变成了在 \(t-c\) 时刻单点修改,链上查询。 那就很好做了,套路的维护每个点到根的 阅读全文
posted @ 2025-02-24 18:23 all_for_god 阅读(32) 评论(0) 推荐(0)
摘要:树套树是一种相当高级的数据结构,同时因为树本身的种类就有很多,因此“树套树”就千变万化,层出不穷。 但是一般而言,树状数组、线段树以及平衡树是树套树中相对常用的树。同时,因为树套树本身常数过于巨大,因此一般而言解题时能用树状数组就别用线段树,能用线段树就别用平衡树。 P2617 Dynamic Ra 阅读全文
posted @ 2024-12-12 09:34 all_for_god 阅读(80) 评论(0) 推荐(0)
摘要:主席树作为最常用的可持久化数据结构,广泛运用与各种区间、树上问题的在线求解已经对DP的优化上。这里主要讨论其单纯作为数据结构的应用。 P1972 [SDOI2009] HH的项链 这是一道极其经典的题——静态区间种类数,其变体非常多,树上的,带修的,强制在线的等等。 这题做法也很多样,离线后树状数组 阅读全文
posted @ 2024-11-11 15:16 all_for_god 阅读(88) 评论(0) 推荐(0)
摘要:平衡树作为一种中级数据结构,有着广泛的使用场景。其平衡性的维护方式灵活多变,而其中的无旋treap更以简单著称 P3369 【模板】普通平衡树 给定集合。 修改: 插入一个数 x。 删除一个数 x(若有多个相同的数,应只删除一个)。 查询: 定义排名为比当前数小的数的个数 +1。查询 x 的排名。 阅读全文
posted @ 2024-09-16 21:32 all_for_god 阅读(160) 评论(0) 推荐(0)
摘要:总的来说,树上合并类问题主要用于解决树上统计种类数、最大值一类的问题。 最朴素的树上合并思路为分别统计每个子树的答案合并再加上父亲节点本身的答案。一般采用启发式合并,将小子树合并进大子树中 如 树上数颜色 题意: 给定一颗有根树,每个节点有颜色,求每棵子树的颜色种类数 简要题解: 非常经典,颜色数统 阅读全文
posted @ 2024-09-08 00:28 all_for_god 阅读(29) 评论(0) 推荐(0)