Processing math: 0%

Loading

随笔分类 -  数据结构

摘要:爆改了之前文艺平衡树的板子。 [luoguP2710 数列](https://www.luogu.com.cn/problem/P2710) 大致题意: 维护数列,支持 插入、删除、区间翻转、区间覆盖、区间求和、区间最大子段和。 code: (头文件等略) ```cpp const int maxn 阅读全文
posted @ 2023-03-02 19:32 pjykk 阅读(51) 评论(0) 推荐(0) 编辑
摘要:(DS 记录) problem: [luoguP3437 [POI2006]TET-Tetris 3D](https://www.luogu.com.cn/problem/P3437) 题意:矩形覆盖矩形最大值。(保证每个位置的值单增,这样可以用标记永久化处理) 板子。内层线段树维护列,外层线段树维 阅读全文
posted @ 2023-02-28 19:56 pjykk 阅读(85) 评论(0) 推荐(0) 编辑
摘要:semi-AFO 选手的 DS 记录( 您将在这里见到最垃圾的扫描线写法. ## 1. 面积 扫描线本身还是很好理解的. 偷一张图 (图源 [OI-wiki](https://oi-wiki.org/geometry/scanning/)) ![](https://oi-wiki.org/geome 阅读全文
posted @ 2023-02-25 22:08 pjykk 阅读(57) 评论(0) 推荐(0) 编辑
摘要:众所周知, 如果我们用正常的分块做单点加区间求和, 时间复杂度高达 O(1)-O(n^{1/2}) (修改-询问). 然后你发现这太慢了. 于是你考虑改一下分块的大小. 我们更改块的大小为 n^{2/3}, 整块的复杂度成功变成了 O(n^{1/3})! 但是散块的复杂度变成了 $O(n 阅读全文
posted @ 2022-08-13 20:23 pjykk 阅读(37) 评论(0) 推荐(0) 编辑
摘要:(日常口胡) 参考资料:luogu日报 LA 模板题解 一个能把 LCA,RMQ 和 LA 问题做到线性的奇怪技巧。 大概就是分块,块的大小为 O(\log n),然后整块用原算法,块内可以直接枚举所有可能情况(反正块的大小只有对数级)。 前置知识:ST表做 RMQ,欧拉环游序 LCA 转 RM 阅读全文
posted @ 2022-07-30 16:18 pjykk 阅读(709) 评论(0) 推荐(0) 编辑
摘要:(水) struct point{int l,r,val1,val2/*要维护的信息*/,tag1,tag2/*标记*/;}tree[maxn<<2]; point pushup(point x,point y,int tg1,int tg2/*标记传进来*/) { point ans; if(x. 阅读全文
posted @ 2022-07-20 10:28 pjykk 阅读(47) 评论(0) 推荐(0) 编辑
摘要:最后我们来介绍B树和其衍生出的(左偏)红黑树。 B树和红黑树的图源自这个网站,你也可以在上面找到一些其他的数据结构。 左偏红黑树的图源自这个slide、OI-wiki(删除操作)和这里。 1. B树 我们发现二叉树做不到绝对平衡。于是我们考虑多叉树。 B 树(也叫B-树)就是一种完全平衡的多叉树,也 阅读全文
posted @ 2022-07-14 00:34 pjykk 阅读(151) 评论(0) 推荐(0) 编辑
摘要:笛卡尔树就是每个结点有两个值 val 和 key,其中 val 满足 BST 的性质而 key 满足堆的性质。treap 就是一棵笛卡尔树。 可以证明给定 val 和 key 的前提下笛卡尔树的形态是唯一的。 很明显借助于平衡树的知识我们能 O(n\log n) 进行构建。 但是,当给定的元素已 阅读全文
posted @ 2022-07-13 22:25 pjykk 阅读(46) 评论(0) 推荐(0) 编辑
摘要:fhq_treap 和 Splay 之外的平衡树的代码是不可能写的。仅供学术研究,所以只有口胡,没有代码。 1. 旋转treap 学过 fhq_treap 的都知道 treap 是啥吧( 但是 treap 也可以用旋转来维护。 插入操作: 这是显然的,找到位置插入以后,把结点一路转上去,直到父亲结点 阅读全文
posted @ 2022-07-13 00:16 pjykk 阅读(320) 评论(0) 推荐(0) 编辑
摘要:模板题:LOJ133 就是区间上的问题搬到了矩阵上。 但其实矩阵上的问题处理起来并不容易。比如这道题,涉及矩阵最大值,必须采用二维线段树(线段树套线段树)的方式进行维护,非常繁琐。 但对于LOJ133这道题,因为只有单点修改区间求和,所以考虑使用二维树状数组,即树状数组套树状数组。而二维树状数组写起 阅读全文
posted @ 2022-02-09 12:02 pjykk 阅读(74) 评论(0) 推荐(1) 编辑
摘要:注意:本文全程口胡。暂时没有代码。 猫树,出自immortalCO的博客,是“一种高效处理无修改区间或树上询问的数据结构”。 ~~lxl说他自己反对用猫树这个名字,并且认为这个名字就像ODT一样奇怪,可能叫“二区间合并”更好一些~~ 首先我们要明确猫树能干什么。 就如immortalCO的博客的标题 阅读全文
posted @ 2022-02-09 01:21 pjykk 阅读(240) 评论(0) 推荐(1) 编辑
摘要:前置知识:普通平衡树。 实际上,平衡树能做到的操作不只有插入删除,查排名查值,前驱后继这些。 如果我们把平衡树移到区间上,我们甚至能够支持比线段树更强的操作——区间翻转。 这就是文艺平衡树这道题了。 1. 区间树 首先我们来明确一下区间树的概念。 顾名思义,区间树就是用来维护区间的。 具体地,我们规 阅读全文
posted @ 2022-02-09 00:01 pjykk 阅读(231) 评论(0) 推荐(0) 编辑
摘要:之前写过 Splay 的介绍。那么接下来就是对于 fhq_treap 的介绍了。 0. 引子 dalao云:“treap,tree+heap 也。” treap 是一个同时具有 tree(即BST)和 heap 的特点的平衡树。 具体地说,我们会对每个节点随机一个 key 值,然后要求这棵 BST 阅读全文
posted @ 2022-02-08 23:51 pjykk 阅读(209) 评论(0) 推荐(0) 编辑
摘要:0. 前言 前置知识:二叉查找树(BST)。 我们知道,BST 是会被恶意数据卡成O(n^2)的。(如下图) 树变成了一条链,这很显然不是我们想要的,我们需要找到一种方法来让 BST 保持平衡。 于是我们就有了各式各样的平衡树,而在 OI 中应用最为广泛的就是 Splay 和 fhq_treap 阅读全文
posted @ 2021-07-12 21:50 pjykk 阅读(162) 评论(0) 推荐(0) 编辑
摘要:树上的许多问题都可以用dfs序+线段树予以解决。 轻重链剖分是通过优化dfs的顺序,达到优化时间复杂度的目的。 它可以O(n\log^2n)支持链上加,链上和还有O(n\log n)LCA,子树加,子树和。 前置知识:dfs序,树形dp,线段树,没了。 首先给出一些定义: 重儿子:子树大小最 阅读全文
posted @ 2021-07-12 12:42 pjykk 阅读(91) 评论(0) 推荐(0) 编辑
摘要:UVA11987(vjudge) 并查集神题。也是在这里头一次听说了并查集的删除操作。 题目大意: 要求支持3个操作: 合并x,y所在集合; 将x移到y所在集合; 查询x所在集合中元素的个数和元素的和。 如果只有1、3操作,那么这道题就是一道简单的并查集。 现在有了2操作,那么就需要 阅读全文
posted @ 2021-07-11 23:54 pjykk 阅读(101) 评论(0) 推荐(0) 编辑
摘要:感觉自己对这种数据结构理解的一直不是很好…… 于是就有了这一篇。相信所有人都能看懂( 符号约定: 对于队列,使用[表示队首,使用]表示队尾。 对于栈,使用<表示栈顶,使用]表示栈底。 1. 单调队列 1.1 什么是单调队列 顾名思义,“单调队列”就是队列内元素满足单调性的队列。 比如下面这三个队列: 阅读全文
posted @ 2021-07-10 22:57 pjykk 阅读(304) 评论(0) 推荐(0) 编辑
摘要:不包括字符串和图论内容。 代码压行警告qwq 如果存在与数据结构有关的经典算法,也会予以列出。 1. 单调队列 O(n) luoguP1886 单调队列和单调栈的讲解在这里 const int maxn=1000010; int n,k,cnt,a[maxn],minans[maxn],maxa 阅读全文
posted @ 2021-07-08 23:05 pjykk 阅读(97) 评论(0) 推荐(0) 编辑
摘要:有用的参考资料: hzwer分块九讲 分块九讲提交 分块是一种优美的暴力算法。 其思想为将数组分为若干块,修改、查询时将整块一起处理,而对剩余的元素,即散点进行暴力处理,以优化时间复杂度。 同时,分块的适用性更加广泛,可以解决插入元素,区间众数等线段树所不能解决的操作。 假设数组长度为 n,而分 阅读全文
posted @ 2021-01-03 22:39 pjykk 编辑
摘要:##一、ST表 ~~最没用的一种~~,一般只用于静态区间RMQ(无修改,查询区间最大/最小值)。 (gcd 也能做, 只要能重复贡献就行 (也就是重复计算不会影响结果) ) 但是ST表的查询操作复杂度异常优秀,能做到O(1),这是其它数据结构难以做到的。 ST表的思路大致就是用一个二维数组$f[ 阅读全文
posted @ 2020-12-21 22:10 pjykk 阅读(274) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示