题目
·可持久化数据结构
完成情况 | 题目 | 出处 |
---|---|---|
AC | MEX-Query | Codeforces Gym 101237A |
Accessed | 任务管理系统 | CQOI2015 |
点分治非常好理解。合并时,保证复杂度在nlogn以内就好。map用得很多,当然用其他方法就更好。
splay大概是懂的,虽然没有写过。题目一般是以下标为关键字建splay,要进行什么操作时就把节点access。除了val、cnt和siz外,flip和totalval也是很常用的标记。可以用来做类似线段树的操作。
Link/ cut tree!
我今天才知道树链剖分是
O(nlogn2)
的。
access
操作就是访问操作。每次访问一个节点,就access它。它的作用是让你可以方便地操作它。access之后再splay一下就更好操作了。splay中每个节点的左边是他的祖先,右边是他的子孙。access+splay以后,访问的节点就没有子孙了。
介绍一些常用方法:
- 边权可以拆成点权,总结点数翻一倍。
- 可以做动态树问题。当然你要先发现是一个动态树问题,再用lct。比如魔法森林按a从小到大加边并维护b的最小生成树。
主席
(部分参考
owenowl
的博客)
主席树可以离散。
主席树的方法是insert、remove、区间kth和区间rank。
平衡树可以做区间第k大。
可持久化数组
如果主席树开不下,可以考虑可持久化数组。每时每刻记录新的行和以前对应那里。(Persistent Bookcase)
开得下就主席树啊。(可持久化并查集 by zky)
方法或题解
线段树有一种方法是在往下走的时候判断往那边走,这个和线段树的基础方法有点不同,但也比较好用。(Couriers)
树上主席树可以每次从父亲作为cop节点。一条链就是关于lca的两个区间。(Count on a tree)
动态开点好!线段树套线段树什么用都没有,只能过1000的数据,什么用都没有。(简单题)
维护信息的难题
mex不能维护。用桑木威改一改就好。(MEX-Query)
郁闷的出纳员
可以考虑记录偏移量,加入时加上这个偏移量。全部减少的时候,把偏移量节点splay到根,然后删去他的左子树。
可持久化trie
花神的嘲讽计划IV
因为长度是固定的,考虑哈西。
树状数组套主席树
每个节点维护自己的动态开点值域线段树,查的时候在所有需要的值域线段树上的值加起来。
MORE IN 12.4 !!!