![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法总结
文章平均质量分 90
是某ICPC蒟蒻了
只会加罚时
展开
-
可持久化线段树总结
普通的可持久化线段树的用法就是利用动态开点,在一次修改中只新建有修改的结点,从而实现可以调用某次修改前的线段树。例如在单点修改中,每次更改的最多只有线段树的一条链,则修改需要的时间复杂度与空间复杂度均为O(logN)O(\log N)O(logN)。可持久化线段树也有一些拓展用法,例如较常见的可持久化权值线段树。求逆序对个数常见的一种做法即建立权值线段树(or树状数组)。回顾一下这个做法的思想,用一个线段树去维护询问可能出现的权值的信息,在这个问题中是动态维护[1,cur−1][1,cur-1][1,c原创 2021-06-11 14:14:10 · 338 阅读 · 0 评论 -
简析树上倍增
树上倍增,可在树的某条链上随深度具有某种单调的性质时进行查找,使时间复杂度从暴力查找的O(N)O(N)O(N)变为O(logN)O(\log N)O(logN)。树上倍增需要构建数组f[N][⌈logN⌉]f[N][\left \lceil \log N \right \rceil ]f[N][⌈logN⌉],其中f[n][i]f[n][i]f[n][i]代表的是从结点nnn向根节点方向走2i2^i2i步到达的结点。很显然,f[n][0]f[n][0]f[n][0]即结点nnn的父节点,在建图时即可原创 2021-06-06 15:15:18 · 290 阅读 · 0 评论 -
splay区间操作
splay是平衡树的一种,但其更广泛的应用是进行对区间的操作,在熟悉了splay平衡树的一系列操作之后,就可以开始探究其区间操作了。splay运用在区间操作上时,每个结点都对应区间上的一个点,每个子树都对应一段区间。而splay可以当作区间树的根本原因是“旋转操作不改变splay的中序遍历序列”,因此要对一段区间进行操作时,只需要通过一系列旋转,使某个子树对应该段区间即可。这时候,满足二叉搜索树性质的是该结点对应的点在区间中的位置,但这个数据并不需要储存在splay树上。首先考虑如何将一段区间对应到一原创 2021-05-28 15:26:33 · 713 阅读 · 0 评论 -
中途相遇法/折半搜索
对于一些搜索问题,可以将搜索过程分为两部分进行分别搜索,得到两个答案序列,再将两个答案序列进行合并,从而得到最终答案。例如,在搜索的每一个结点都有两种选择,那么搜索的时间复杂度为O(2n)O(2^{n})O(2n),假如使用折半搜索,则时间复杂度将变为O(2n2)O(2^{\frac{n}{2}})O(22n)加上合并操作的时间复杂度。因此,折半搜索通常用在答案序列易合并的情况。例如Jurassic Remains题意:给定n个由大写字母组成的字符串(n≤24)(n\leq 24)(n≤24),试原创 2021-04-06 16:07:45 · 287 阅读 · 0 评论 -
斜率优化DP总结
斜率优化,即状态转移方程可转换成形如dp(i)=minj<i{f(j)−g(i)⋅h(j)}+ϕ(i)dp(i)=\min\limits_{j<i}\{f(j)-g(i)·h(j)\}+\phi(i)dp(i)=j<imin{f(j)−g(i)⋅h(j)}+ϕ(i)的形式。令y=f(j),k=g(i),x=h(j),b=dp(i)−ϕ(i)y=f(j),k=g(i),x=h(j),b=dp(i)-\phi(i)y=f(j),k=g(i),x=h(j),b=dp(i)−ϕ(i),即求所原创 2021-03-25 16:49:20 · 166 阅读 · 0 评论