数据结构笔记
-
Linux测空间
-
1级邻域问题:维护儿子,并上父亲信息
-
trie维护全局+1:从低位往高位建01trie,+1交换0/1子树并递归做1子树
STL
- list较好用
- 注意deque的空间常数
- pb_ds
基础数据结构
- 栈,队列,链表
- 单调栈,单调队列(可优化DP)
baka's trick
-
描述:在需要前、后弹出并插入的线性数据结构维护容易加入但不容易删除的值,做到\(O(加入和删除次数)\)
-
把这个序列分成大小相同的两个栈,一个开口朝前、另一个开口朝后。在加入数据时,同时维护我们要维护的值(从栈底到当前位置的区间值)
-
如果有一个栈删空了,则把另一个栈再次分成两部分,并暴力重构维护的值
由于每次重构只会在做了\(O(栈的大小)\)次删除操作后才会重构,并且重构的代价是\(O(栈的大小)\),所以可以做到预期复杂度
并查集
- 普通并查集,扩展域并查集,带权并查集
ST表(求解RMQ问题)
-
全名
Sparse Table,稀疏表 -
ST表用于处理可重复贡献问题
dfs序求LCA
- 先求dfs序(dfn数组),并维护rnk(用dfs序查节点)和fa(父亲)
- 两个点的LCA是两个点之间dfs序最小的节点的父亲
线段树
树上主席树
-
一般的主席树是序列上、从前一个位置建立新版本,
树上主席树是从父亲的版本建立新版本
浙公网安备 33010602011771号