Treap,替罪羊树,splay。跑得不慢,代码在不影响版面的前提下基本已经缩到极限了,不知道还能不能更短。 其实我还会写AVL树,只不过太长懒得写了。反正Treap和替罪羊树跑得也挺快,用用这俩就够了。 话说Treap和替罪羊树都是重量平衡树来着……这倒是方便我了,不过写动态标号的时候到底该写哪个 ...
分类:
其他好文 时间:
2017-01-17 18:44:17
阅读次数:
317
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的 ...
分类:
其他好文 时间:
2017-01-04 20:04:50
阅读次数:
141
高级数据结构 一、左偏树&斜堆 合并,插入,删除 打标记 二、线段树 建树,修改,查询,lazy标记 主席树,可持久化线段树 //zkw线段树 例:bzoj1146 bzoj2653 三、平衡树 旋转:splay treap 笛卡尔树 后缀平衡树 重建:替罪羊树 四、树套树 线段树套线段树 线段树套 ...
分类:
其他好文 时间:
2016-12-17 13:49:05
阅读次数:
161
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 题意:详见题面,中文 思路:平衡树的模板题。 可用Treap,Splay,Scapegoat Tree。 【替罪羊树代码】 【Splay代码】 ...
分类:
其他好文 时间:
2016-09-27 16:28:30
阅读次数:
253
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 思路:替罪羊树套权值线段树。 当替罪羊树某个子树大于某个比利(比例)时就暴力重构,本题时间复杂度:O(nlog^3n) ...
分类:
其他好文 时间:
2016-07-21 22:01:20
阅读次数:
164
被这题虐了快两天。。。。。。。。。。。。 找最大的异或值显然用trie。。因为还要支持插入删除修改。。所以就用平衡树套trie。 如果旋转的话,整颗trie都要重新建,所以正常姿势是替罪羊树(虽然只是早建晚建的区别= =)? 看了学长的解题报告后才敢用treap= =。。结果就陷入了无尽的...
分类:
其他好文 时间:
2016-01-20 22:14:44
阅读次数:
175
一、斜堆斜堆是一种可以合并的堆节点信息:struct Node { int v; Node *ch[2];};主要利用merge函数Node *merge(Node *x, Node *y) { if(!x) return y; if(!y) return x; if(...
分类:
其他好文 时间:
2015-11-25 23:22:07
阅读次数:
334
离线算法:先将所有涉及到的串建成字典树,然后用线段树维护dfs序,时间复杂度$O(m\log L)$。在线算法:用替罪羊树动态维护Trie树的dfs序即可,时间复杂度$O(L\log L)$。#include#include#includeusing namespace std;const int ...
分类:
其他好文 时间:
2015-10-12 22:38:24
阅读次数:
305
替罪羊树模版题。我们发现原式无法比较大小。用平衡树为每个式子分配一个值,用来比较大小。树上每个节点有l,r,这个值为l+r。左节点为l,mid,右节点同理。这样分配值显然可以比较大小了。但该平衡树不能旋转,于是用替罪羊树即可。siz要在好几处修改。。调了好久。。#include #include #...
分类:
其他好文 时间:
2015-09-12 17:32:14
阅读次数:
201
替罪羊树套权值线段树,其中替罪羊树可以满足插入的操作。#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; il=t->r=blank; t->sum++; if (l==r) ...
分类:
其他好文 时间:
2015-05-05 21:18:43
阅读次数:
102