题目大意:给定n个集合,提供三种操作:
1.合并a,b所在集合
2.回到第k次操作之后的状态
3.询问a,b是否在同一集合
可持久化并查集0.0 实现方式是用可持久化线段树实现可持久化数组维护可持久化并查集。。。
至于可持久化数组,每条路径上只有叶节点的位置的num域是有意义的,感觉无比浪费0.0 可是不这样还真没法维护0.0
合并时本来应该按照每个节点的深度之和维护,结果手残懒得写,...
分类:
其他好文 时间:
2014-10-20 19:30:18
阅读次数:
185
题目大意:查询树上两点之间的第k大的点权。
思路:树套树,其实是正常的树套一个可持久化线段树。因为利用权值线段树可以求区间第k大,然后再应用可持久化线段树的思想,可以做到区间减法。详见代码。
CODE:
#include
#include
#include
#include
#define MAX 100010
#define NIL (tree[0])
usin...
分类:
其他好文 时间:
2014-10-14 19:41:19
阅读次数:
153
这是是一道可持久化数据结构题。具体分类不明按二进制位建立一颗可持久化树:因为每个节点都有两个儿子,于是非常像线段树,但是其实本质又是trie,于是就叫它可持久化trie吧。。。每次新家点的时候就在trie里加一条链,然后查询用贪心方法查即可。 1 /*************************...
分类:
其他好文 时间:
2014-10-03 23:27:45
阅读次数:
357
可持久化数据结构(Persistent data structure)就是利用函数式编程的思想使其支持询问历史版本、同时充分利用它们之间的共同数据来减少时间和空间消耗。所以这里讲的可持久化线段树也叫函数式线段树(又叫主席树……因为先驱就是fotile主席Orz……)。先了解一下主席树http://s...
分类:
其他好文 时间:
2014-08-20 16:05:12
阅读次数:
205
什么是主席树可持久化数据结构(Persistent data structure)就是利用函数式编程的思想使其支持询问历史版本、同时充分利用它们之间的共同数据来减少时间和空间消耗。因此可持久化线段树也叫函数式线段树又叫主席树。可持久化数据结构在算法执行的过程中,会发现在更新一个动态集合时,需要维护其...
分类:
其他好文 时间:
2014-08-08 17:30:26
阅读次数:
354
首先,可持久化数据结构,CLJ的论文里有讲。 通俗点来讲,就是该数据结构保留历史版本信息,对应的有可持久化链表,可持久化线段树,可持久化树状数组。比如对于线段树更新操作,每次更新新建一棵线段树,那么就有任意一次时间点信息。 当然,这样就非常耗空间,所以,对于线段树,每次只需要对于有更新的节点...
分类:
其他好文 时间:
2014-07-16 22:49:03
阅读次数:
257