【模板】权值线段树套序列线段树 P3380 【模板】二逼平衡树(树套树) 主要思路如下: 外层为权值线段树,内层为动态开点线段树,也就是每个权值线段树上的节点开一个动态开点线段树。 外层的权值线段树支持查询排名,内层的线段树限制了区间。实际上就是在普通权值线段树上查询的价值变成了在其线段树上区间查询 ...
分类:
其他好文 时间:
2020-10-31 01:52:32
阅读次数:
16
#include <bits/stdc++.h> #include <bits/extc++.h> using namespace std; using namespace __gnu_pbds; typedef pair<int,int> pii; tree<pii,null_type,less< ...
分类:
其他好文 时间:
2020-10-21 20:30:50
阅读次数:
25
208. 实现 Trie (前缀树) 题目描述 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); ...
分类:
其他好文 时间:
2020-10-07 21:37:25
阅读次数:
34
平衡树 1. 二叉搜索树的优点 二叉搜索树作为数据存储的结构,最大的优势是可以快速找到给定关键字的项,并且可以快速的实现插入和删除数据操作 因为二叉搜索树采用了二分查找的策略 2. 二叉搜索树存在的问题 但是二叉搜索树有一个麻烦的问题:若插入的数据是一个有序数列(从小到大/从大到小),会造成二叉搜索 ...
分类:
其他好文 时间:
2020-09-17 23:05:38
阅读次数:
28
20行写完极其害怕 只能跑1e5的数据,那个1e6强制在线的开o2只有20pts QAQ 不用reserve也可以过,不过开了之后200ms的点只要130-140ms #include<bits/stdc++.h> using namespace std; #define ll long long ...
分类:
其他好文 时间:
2020-09-17 12:26:24
阅读次数:
24
二叉平衡树: 平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、T ...
分类:
其他好文 时间:
2020-09-17 12:00:19
阅读次数:
59
#include <bits/stdc++.h> #define INF (1<<25) #define MAXN 200005 #define getSZ(p) (p?p->sz:0) #define getSUM(p) (p?p->sum:0) using namespace std; type ...
分类:
其他好文 时间:
2020-08-28 14:34:02
阅读次数:
43
基本信息维护 struct Splay { int sz, fa, val, cnt, ch[2]; //sz 表示子树大小 //ch[0 / 1]表示左右两个儿子 //fa 表示父亲 //cnt 表示该点的值出现了几次 //val 节点的值 } t[N]; #define ls(p) (t[p]. ...
分类:
编程语言 时间:
2020-08-05 00:11:51
阅读次数:
115
二叉搜索树 性质:一个节点x左子树所有点的关键字都比x的关键字小,右子树所有点的关键字都比x的关键字大 treap “树堆” “Tree+Heap” 性质:每个点随机分配一个权值,使treap同时满足堆性质和二叉搜索树性质 复杂度:期望O(logn) 设每个节点的关键字是key,随机权值是rand ...
分类:
其他好文 时间:
2020-07-21 23:10:24
阅读次数:
67
Splay: 像BST(二叉搜索树)一样插入查询,可以改变树的形状,可以区间翻转,可以实现动态树,不可持久化。 核心代码: 1 void rotate(int a) // 旋转 2 { 3 int b = fa[a], c = fa[b]; 4 int k = son[b][1] == a, w = ...
分类:
其他好文 时间:
2020-07-18 00:54:56
阅读次数:
87