摘要:
文艺平衡树 之前我用分块乱搞过文艺平衡树,今天一起来看看如何用平衡树实现文艺平衡树。 题目描述: 给你长度为 $n$ 的序列 $A$ ,初始时 $A_i=i$ ,有 $m$ 次操作,每次对给定区间 $[l,r]$ 进行翻转。 要求输出 $m$ 次操作以后的序列。 实现文艺平衡树有三种思路:Splay 阅读全文
摘要:
Splay ~~(也许不)~~详解 前言 在我之前的博文中,已经介绍了平衡树的一种实现方式:树堆(Treap),今天再来介绍一种功能更强大,实现更方便,~~常数更大~~的平衡树——伸展树(Splay)。如果您还不知道平衡树是甚么,请移步这里。 背景介绍 伸展树 (Splay Tree),也叫分裂树, 阅读全文
摘要:
莫队套值域分块 在经典的“静态区间第 $k$ 小”问题中,我们已经知道有可持久化线段树(主席树)做法和线段树套平衡树等做法。假设现在要求支持单点修改,变成“动态区间第 $k$ 小”问题,线段树套平衡树仍然可做,主席树则需要在外侧套一个树状数组。这样总复杂度为 $O(Nlog^2N)$ 。 但是众所周 阅读全文
摘要:
区间众数问题 区间众数问题一般是指给定一个序列,每次询问 $[l,r]$ 区间的众数是几的问题。 当然了,带修改的区间众数问题比较难搞,这里不展开讨论,只研究静态的区间众数问题。 众数并不满足区间“可加性”,这导致它让全部基于二分的数据结构直接 gg (比如线段树、树状数组等),所以大部分研究区间众 阅读全文
摘要:
回滚莫队分块 在莫队算法中,需要支持快速修改已知区间中单个元素、更新答案,以实现向答案区间转移。 然而,在某些问题中,修改后的更新会变得比较困难:比如删除之后,你更新答案为次大,过一会又需要删除,你又要把答案更新为次次大... 又或者修改之后要 $O(n)$ 重新统计答案...等等。 假如你很勇的话 阅读全文
摘要:
带修莫队分块 $\text{Update 2021/7/12}$ 填坑,找到一道带修莫队的题目。 $\text{Update 2021/7/10}$ 更新了码疯,用 while 语句替代了莫队中的 for 语句。 修改了错别字和病句。 在这篇博客中,我已经介绍了“静态莫队”算法,它可以离线解决一类静 阅读全文
摘要:
静态莫队分块 $\text{Update:2021/7/9}$ 优化了叙述顺序 增加了莫队算法的几何证明 $\text{Update:2021/7/10}$ 更新了码疯,用 while 替代了莫队中的 for 语句,并压缩了代码。 前言 分块的另一种重要形式是对询问分块。这是一种离线做法,又被称为“ 阅读全文
摘要:
可持久化线段树(主席树)练习题 前言:“**出题人你有那大病非得卡我空间。。。” 可持久化线段树并不是 NOIp 考点,但是赛场上谁管你用什么算法,能得分就行。我学习可持久化线段树的目的其实在于能多骗点分,在赛场上万一不会了可以拿来乱搞。所以了解可持久化线段树能用在哪些地方还是十分有必要的。 另外, 阅读全文
摘要:
可持久化数据结构(线段树) Part 1 可持久化数据结构 这个世界上有众多的~~毒瘤~~数据结构,但是他们维护的大多是“数据库的最新状态”。如果想知道数据库在任意时间的历史状态(即 $\forall i\in [1,M]$ ,执行完操作 $i$ 后数据库的状态)。一种暴力的做法是多花费 $M$ 倍 阅读全文