平衡树
文章平均质量分 53
Lazer2001
天涯何处无芳草
只是白兔寻不到
展开
-
BZOJ-1588 营业额统计 Treap裸题
大家都很强, 可与之共勉。二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树。 但是操作里面涉及插入或删除,经过多次之后不见得还能保证二叉搜索树的性质,每次查询不见得还是logn原创 2017-05-26 14:53:57 · 2016 阅读 · 0 评论 -
BZOJ-3224 普通平衡树 TYVJ-1728 Treap + Vector
大家都很强, 可与之共勉。Vector 暴力出奇迹#include <cctype>#include <cstdio>#include <vector>#include <algorithm>std :: vector<int> vc;inline void insert( int x ) { vc.insert( std :: lower_bound( vc.begin( ), vc原创 2017-05-26 16:09:25 · 2404 阅读 · 0 评论 -
BZOJ-3595 方伯伯的OJ 双Treap
大家都很强, 可与之共勉。2017年的Rank6/************************************************************** Problem: 3595 User: Lazer2001 Language: C++ Result: Accepted Time:2252 ms Memory:16952 kb原创 2017-05-30 10:49:04 · 3573 阅读 · 0 评论 -
史上最强图解Treap总结, 不是浅谈!
大家都很强, 可与之共勉。Treap = Tree + Heap. 树堆,在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构。Treap 维护堆的性质的方法只用到了左旋和右旋, 编程复杂度比Splay小一点,原创 2017-06-01 16:59:10 · 14585 阅读 · 3 评论 -
BZOJ1014 火星人prefix Splay维护序列hash值+二分答案判LCP
大家都很强, 可与之共勉。Description火星人最近研究了一种操作:求一个字串两个后缀的公共前缀。比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 8 9 10 11 字符 m a d a m i m a d a m 现在,火星人定义了一个函数LCQ(x, y),表示:该字符串中第x个字符开始的字串,与该字符串中第y个字符原创 2017-11-27 10:37:34 · 309 阅读 · 0 评论 -
BZOJ3224 普通平衡树 Splay + 替罪羊树
大家都很强, 可与之共勉。Splay:Splay的优势是进行序列中的区间操作。所以才维护一个普通序列的时候它其实是会被卡成一条链的,所以最好操作一次之后就把这个节点splay到根。至于splay怎么做,就是很常见的双旋处理了。注意到为了防止出现假的节点,一定要在erase的时候把root改了而不是改形式参数。不然这个代码就是错的了(但是可以A)。/**************************原创 2017-11-26 21:18:16 · 405 阅读 · 0 评论 -
冒泡——pb_ds库 水 BZOJ3224普通平衡树
大家都很强, 可与之共勉 。因为pbds库里的平衡树相当于set而不是multiset,所以我们需要让它兹磁重复元素嘿嘿嘿。 实测rb_tree_tag 404ms,splay_tree_tag 544ms。 学到老活到老233333# include <bits/stdc++.h># include <ext/pb_ds/tree_policy.hpp>...原创 2018-02-27 17:12:33 · 790 阅读 · 0 评论