随笔分类 -  Data Structure

摘要:一、左偏树能做什么? **左偏树(Leftist Tree)是一种维护可并堆(Mergeable Heap)**的数据结构。 可并堆是一种抽象数据结构(Abstract Data Type, ADT),在普通的**堆(Heap)**的基础上,增添了 upd 操作,使得两个堆可以合并。这也是其名之来历 阅读全文
posted @ 2021-03-14 15:39 Aehnuwx 阅读(123) 评论(0) 推荐(0)
摘要:例题:区间加,区间查询 下文使用 \(m\) 表示查询次数,以示区分。 朴素做法 \(O(m\times n)\). 我们发现需要优化后面这个 \(n\). 考虑分块。将整个区间打成 \(\lceil n / \sqrt{n} \rceil\) 块。 称有 \(\sqrt{n}\) 个数于其中的块为 阅读全文
posted @ 2021-01-03 23:46 Aehnuwx 阅读(95) 评论(0) 推荐(0)
摘要:AcWing 246. 区间最大公约数 题意简述:区间加,区间 gcd. 解: 根据更相减损术,有 \(\gcd(x,y)=\gcd(x,y-x)\). 一般地,有 \(\mathbf{\gcd(a_1,a_2,\cdots,a_n)=\gcd(a_1,a_2-a_1,\cdots,a_n-a_{n 阅读全文
posted @ 2020-11-01 00:19 Aehnuwx 阅读(65) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-13 23:49 Aehnuwx 阅读(0) 评论(0) 推荐(0)
摘要:做这道题需要知道一个性质:树上 \(x,y\) 两点的距离为 \(dis(x)+dis(y)-2dis(LCA(x,y))\),其中 \(dis(i)\) 表示 \(i\) 点离根节点的距离,\(LCA(i,j)\) 表示 \(i,j\) 两点的 LCA(最近公共祖先)。 然后就直接水过去了。在预处 阅读全文
posted @ 2020-04-04 21:28 Aehnuwx 阅读(325) 评论(0) 推荐(0)
摘要:前言 本题是一道哈希表的模板题。然而当时的 data maker 竟然连直接开桶的做法都没有卡掉... 于是在 Luogu 上,很长一段时间之内,这道题的最优解一直是这个错解。 而且,虽然题面上写着给出的数在 32 位有符号整数范围内,但是 data maker 也没有出出来负数...导致一些错误的 阅读全文
posted @ 2020-03-16 10:03 Aehnuwx 阅读(124) 评论(0) 推荐(0)
摘要:这道题显然可以直接模拟前 \(I\) 个小球的掉落,最终即可得解.但是,很明显,这么做会使时间复杂度直接爆炸成 \(O(l\times D\times I)\),已然是力不从心. 仔细观察,可以简单地发现:我们只需模拟第 \(I\) 个小球的运动即可,通过判断当前节点上已经经过了的小球数的奇偶性,可 阅读全文
posted @ 2020-01-22 12:25 Aehnuwx 阅读(101) 评论(0) 推荐(0)
摘要:题目大意: 给定一个数列 \({a_n},a_0=1,a_{i+1}=(A\times a_i+a_i\bmod B)\bmod C\),求这个数列第一次出现重复的项的标号。 Sol: 哈希表模板题。 模数随便设,$2000003$ 实际效果比较好,跑得挺快。 每次计算一下数列里新的项的值,插入到哈 阅读全文
posted @ 2019-09-22 22:25 Aehnuwx 阅读(651) 评论(0) 推荐(0)
摘要:Link 有句话说的好啊,树的题不一定要把树建出来 这题就是这样 这题直接在读入后, 写个递归函数用于二分查找, 然后,, 就没了。。 (貌似太口胡了吧) \(\rm code\) # include <bits/stdc++.h> using namespace std; const int ma 阅读全文
posted @ 2019-08-06 20:17 Aehnuwx 阅读(189) 评论(0) 推荐(0)
摘要:这个题看上去很有高论,但其实没有那么复杂。只需要分别模拟队列、栈、大根堆和小根堆的处理过程即可。 细节和注释都在代码里了。 $ \rm code $ 阅读全文
posted @ 2019-06-11 22:00 Aehnuwx 阅读(248) 评论(0) 推荐(0)
摘要:题目地址: $Luogu$:https://www.luogu.org/problemnew/show/P3378 那么我们一看到题目应该就会写这道题了吧。 我们需要支持三个操作: 1、插入一个数入小根堆。 2、输出小根堆的最小值。 3、删除小根堆的最小值。 由于我们知道,小根堆的最小值就是它的根, 阅读全文
posted @ 2018-06-01 19:42 Aehnuwx 阅读(147) 评论(0) 推荐(0)
摘要:下文摘自百度百科~~ 队列同样也是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为 阅读全文
posted @ 2017-11-01 12:29 Aehnuwx 阅读(254) 评论(0) 推荐(0)
摘要:下文摘自百度百科~~栈(stack)又名堆栈,它是一种特殊的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素 阅读全文
posted @ 2017-10-31 13:17 Aehnuwx 阅读(192) 评论(0) 推荐(0)
摘要:题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。 输入输出格式 输入格式: 第一行两个数n,m。 第二行,n个正整数,为所给定的数列。 输出格式: n行,第i行的一个数ai,为所求序列中第i个 阅读全文
posted @ 2017-10-07 11:43 Aehnuwx 阅读(556) 评论(0) 推荐(0)