
平衡树
Lynstery
一只蒟蒻
展开
-
平衡树——Treap (含完整模板)
平衡树——Treap基本概念:二叉搜索树(BST): 对于任意根节点,满足左儿子的权值<根节点的权值<右儿子的权值的二叉树。也就是说,BST的前序遍历的结果是从小到大的。通过BST,我们可以进行插入,删除元素等操作,还能记录一些信息查询更多东西。所有的操作都可以O(h)实现。h在最好的情况下是logn,但是在最坏情况下,BST可能会退化成链,复杂度极不稳定。那么能不能想办法使其平衡呢?于是就有了平原创 2016-12-21 22:37:24 · 2890 阅读 · 0 评论 -
Treap——模板
基于旋转的Treap。 复杂度O(log2nlog_2n)#include<cstdio>#include<cstdlib>int max(int x,int y){ return x>y?x:y; }int min(int x,int y){ return x<y?x:y; }struct node{ node* ch[2]; int key,fix,size,cnt;原创 2017-02-21 19:42:56 · 438 阅读 · 0 评论 -
splay维护序列——模板整理
时间复杂度O(log2nlog_2n)#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{ int key,size; node *ch[2]; void maintain(){ size=ch[0]->size+ch[1]->size+1; }原创 2017-02-21 19:46:45 · 628 阅读 · 0 评论 -
[平衡树+启发式合并 || 点分治] POJ1741 Tree
题意这题就是楼教主男人必做八题之一 给出一棵有边权的树,以及一个数K,求距离小于等于K的点对的个数。题解点分治显然可做,对于当前点分树,把所有点到当前根的距离排序后扫一下即可。 复杂度O(nlog22n)O(nlog^2_2n)。 这里主要讲一下另一种不错的思路——平衡树+启发式合并。 具体做法: 随便找个根,然后递归下去从叶到根把子树不断合并。过程中,给每个子树建平衡树来存其中所有点到子树原创 2017-02-27 20:41:51 · 810 阅读 · 1 评论 -
[Splay] BZOJ1500: [NOI2005]维修数列
题意题解纯数据结构题,用来练代码能力很不错。 就是用splay来维护这个序列,各种标记放上去,维护各种信息即可。 我们需要维护这些: val:节点的数字 size:子树大小 sum:子树对应的区间的数字和 ml:子树对应区间的最大前缀和(长度>0) mr:子树对应区间的最大后缀和(长度>0) allm:子树对应区间的最大连续子段和(长度>0) rev:翻转标记 same:修改标记原创 2017-02-28 19:52:38 · 517 阅读 · 0 评论 -
fhq_Treap——模板整理
好写,而且能可持久化。#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;struct node{ int key,fix,size; node* ch[2]; node(int tkey=2e+9+5,node* son=NULL){ key=tkey; fix=(rand()<<1原创 2017-04-14 14:57:16 · 816 阅读 · 0 评论 -
[splay+二分+哈希] BZOJ1014: [JSOI2008]火星人prefix
题意给出初始的字符串。需要进行M次操作描,操作有3种: 1.询问LCQ(x,y)。2.修改单个字符。3.插入单个字符。 其中LCQ(x,y)表示字符串x~len与y~len的最长公共前缀的长度。(len为当前串长) M<=10^5题解对于静态的LCQ问题,我们可以对所有后缀排个序搞一搞实现,但是有了修改操作后就不行了,要另想办法。发现字符串的变化很自由,非常难控制,所以只好上大数据结构了,我们原创 2017-02-21 15:23:23 · 550 阅读 · 0 评论 -
[平衡树+启发式合并] BZOJ2733: [HNOI2012]永无乡
题意永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操作:B x y 表示在岛 x 与岛 y 之间修建一座新桥。Q x k 表示询问当前与岛 x连原创 2017-04-16 15:57:15 · 538 阅读 · 0 评论