随笔分类 - 算法学习
摘要:$ODT$,即珂朵莉树,又称老司机树($Old\ Driver\ Tree$)。它是一个十分暴力的数据结构,可以用于各种乱搞,也非常的实用。当然,这全要基于一个基本条件:数据随机。
阅读全文
摘要:动态点分治的大致思路便是利用点分树的性质在点分树上维护信息。
阅读全文
摘要:后缀自动机是个神奇的数据结构,它存储着一个字符串所有后缀。
阅读全文
摘要:$LCT$,真的是一个无比神奇的数据结构。它可以动态维护链信息、连通性、边权、子树信息等各种神奇的东西。而且,它其实并不难理解。
阅读全文
摘要:这篇博客的内容,主要建立于后缀排序的基础之上,进一步研究一个$Height$数组以及如何求$LCP$。
阅读全文
摘要:树上莫队的核心思想,就是将一棵树转化成一个序列,然后用普通莫队来搞。
阅读全文
摘要:后缀数组这个东西早就有所耳闻,但由于很难,学了好几遍都没学会。最近花了挺长一段时间去研究了一下,总算是勉强学会了用倍增法来实现后缀排序(据说还有一种更快的$DC3$法,但是要难得多)。
阅读全文
摘要:斜率优化$DP$是难倒我很久的一个算法,我花了很长时间都难以理解。后来,经过无数次的研究加以对一些例题的理解,总算啃下了这根硬骨头。
阅读全文
摘要:单调队列优化$DP$应该还算是比较简单容易理解的吧,像它的升级版斜率优化$DP$就显得复杂了许多。
阅读全文
摘要:线性基真的是一个非常神奇的算法。它可以用于求解一个集合内的最大异或和,而且效率极高,是$O(N\ log\ MaxNum)$的时间复杂度。所以,它还是十分值得一学的。
阅读全文
摘要:要维护一段区间内的最值时,我们可以用堆来操作。但是,如果要合并两个堆,复杂度就极高了。所以,我们就要使用左偏树这个神奇的数据结构,来实现堆的合并。
阅读全文
摘要:杜教筛真的是一个十分著名的筛法,它那玄学的$O(n^{\frac23})$时间复杂度真的是十分神奇。它主要用途是求积性函数的前缀和(当然,根据差分思想,求一段区间内的值之和也是很简单的)。
阅读全文
摘要:现在有两个字符串:$s1$和$s2$,现在要你输出$s2$在$s1$当中每一次出现的位置,你会怎么做?
阅读全文
摘要:$Trie$,又称字典树或前缀树,是一种有序树状的数据结构,用于保存关联数组,其中的键值通常是字符串。
阅读全文
摘要:将两个数据结构合并时,应将小的数据结构中的元素一个一个分别插入大的数据结构。
阅读全文
摘要:树链剖分,关键就在于剖分二字。我们可以将一棵树按照子树的大小将其节点划分成两部分:重节点和轻节点。树链剖分的主要作用在于,可以更好地存储并更改一棵树的信息。
阅读全文
摘要:贪心,是一个很好的算法,只可惜适用的范围不广。随机化,是一个很好的算法,只可惜正确率不高。如果将这两个算法结合起来,我们能不能得到一个适用范围广、正确率较高的算法呢?答案是肯定的。模拟退火($Simulated Annealing$,简称$SA$),一个随机化与贪心结合的算法,就可以轻松解决许多难题(前提是你的$RP$较好或是数据范围较小)。
阅读全文
摘要:在做树上问题时,我们经常会遇到$LCA$(最近公共祖先)问题。曾经的我遇到这类问题只会$O(n)$暴力求解,学了倍增$LCA$,就可以$O(logn)$解决了。
阅读全文
摘要:严格次小生成树,顾名思义,就是在联通图上选择一些边构成一棵树,使这棵树边权和严格次小。
阅读全文
摘要:可持久化并查集应该是一个挺实用的数据结构(例如$NOI2018Day1T1$中就有它的身影)。它主要建立于可持久化数组的基础之上(而可持久化数组的实现是完全基于主席树的),因为这样就可以去访问一些历史版本从而实现可持久化了。
阅读全文

浙公网安备 33010602011771号