![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OI
文章平均质量分 54
llgyc
这个作者很懒,什么都没留下…
展开
-
ST算法
ST(Spare Table)算法是在O(Nlog2N)−O(1)O(N\log_2 N)-O(1)内完成RMQ问题的在线算法。 所谓RMQ(Range Minimal Query)问题是指区间内最小值询问问题。 在朴素算法下,解决RMQ问题的时间复杂度为O(n)O(n),但实际上当遇到数量级比较大的询问时,复杂度就为O(nm)O(nm)(mm为询问次数),所以要使用速度更佳的ST算法原创 2015-08-01 15:19:18 · 484 阅读 · 0 评论 -
Tarjan 算法求LCA(Least Common Ancestors)
Tarjan有几个著名的算法,其中之一就是求LCA(最近公共祖先)。 一个出现在有根树中间的常见问题是:在有根树T中询问一个距离根节点最远的结点xx(即深度最大的结点)使得xx同时为结点Tu、TvT_u、T_v的祖先,我们称xx为u、vu、v的最近公共祖先。这种对于公共祖先的询问我们称之为公共祖先问题,并且以LCA(T,u,v)LCA(T, u, v)表示询问TT中结点Tu、TvT_u、T_v原创 2015-08-02 18:14:12 · 700 阅读 · 0 评论 -
Treap
所谓Treap,就是单词Tree和heap的合成词,它是具有堆特性的一颗二叉查找树,它和 笛卡尔树(Cartesian Tree)的形式很像。因为当二叉查找树退化时速度会很满,所以引入了随机优先值的heap,使在Treap树中,根节点的值大于等于左子树的值,小于等于右子树的值,根节点的优先值大于子树的优先值(其实这里优先值纯属个人喜好,大于和小于效果一样)。如下图所示(黑色为权值,红色为优先值):原创 2015-08-07 11:57:19 · 244 阅读 · 0 评论 -
【BZOJ4871】【SHOI2017】摧毁“树状图”
题目大意 在一棵树上选择两条边不相交的链(可以是单点),问剩余联通块数量最大为多少。 T≤105,∑n≤5×105T\le10^5,\sum n\le 5 \times 10^5Solution 当你发现这题可以用DP做时,就只剩下调程序了。 考虑子树的每个状态分类讨论合并一下即可。感觉思路清晰还是不容易出错的。 PS:话说为什么看到“树状图”和“treediagram原创 2017-05-04 11:51:24 · 1017 阅读 · 0 评论 -
笛卡尔树(Cartesian Tree)
笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为index,一个为value。光看index的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的index都比它小,右子树都比它大;光看value的话,笛卡尔树有点类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要小(或者大)。 它可以处理范围最值查询、范围top k查询(range top k queries)等原创 2015-08-05 08:38:54 · 1392 阅读 · 1 评论