可持久化并查集我觉得就是可持久化数组的一种应用。可持久化数组,顾名思义,就是有历史版本的数组,那么如果我们暴力修改储存的话,修改O(n)查询O(1),空间O(n*m),这样肯定不可行,那么我们发现主席树有这样的功能,他可以快速复制,修改O(log),查询O(log),空间(m*log),是一个可行的 ...
分类:
其他好文 时间:
2017-08-09 22:19:07
阅读次数:
199
思路: 用主席树维护并查集森林,每次连接时新增结点。 似乎并不需要启发式合并,我随随便便写了一个就跑到了3674第一页?3673是这题的弱化版,本来写个暴力就能过,现在借用加强版的代码(去掉异或),直接吊打暴力程序。 ...
分类:
其他好文 时间:
2017-07-14 19:32:43
阅读次数:
144
Description 自从zkysb出了可持久化并查集后……hzwer:乱写能AC,暴力踩标程KuribohG:我不路径压缩就过了!ndsf:暴力就可以轻松虐!zky:……n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是 ...
分类:
其他好文 时间:
2017-02-26 19:36:03
阅读次数:
225
http://www.lydsy.com/JudgeOnline/problem.php?id=3674 (题目链接) 题意 维护并查集3个操作:合并;回到完成第k个操作后的状态;查询。 Solution 其实就是用主席树的叶子节点维护并查集的可持久化数组fa[]。 细节 终于认识到了按秩合并的强大 ...
分类:
其他好文 时间:
2016-11-06 22:58:02
阅读次数:
440
bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集。 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以使合并均摊复杂度为O(nlog2n)。可持久化线段树实际上就是在更新节点时按主席树的插入方式新建一条 ...
分类:
其他好文 时间:
2016-07-24 17:48:26
阅读次数:
242
主席树。 我分不清主席树和可持久化线段树。。 用主席树记录历史版本。 然后每个节点保存一个深度,代表以自己为根的树的深度。 合并时将深度小的树合进深度大的树。 3673也是一样的,不过那道题不强制在线。 #include #include #include using namespace std; ... ...
分类:
其他好文 时间:
2016-07-12 17:11:18
阅读次数:
134
用可持久化线段树维护可持久化并查集。 调了一下午,改为按秩合并就过了。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using name
分类:
其他好文 时间:
2016-02-05 00:58:07
阅读次数:
226
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3674用可持久化线段树维护可持久化数组,加上启发式合并,就成了可持久化并查集。。用root数组来记录当前是第x次操作之后的情景,这样我们就可以返回某次操作之后了。注意一直都是维护点的pos,画个图...
分类:
其他好文 时间:
2015-12-23 15:48:11
阅读次数:
207
题目大意:同3673 强制在线
同3673 只不过慢了一些0.0
这道题只写路径压缩比只写启发式合并要快一点点 两个都写就慢的要死0.0
改代码RE的可能是内存不够
#include
#include
#include
#include
#define M 200200
using namespace std;
struct Tree{
Tree *ls,*rs;
int num;
}...
分类:
其他好文 时间:
2014-10-20 19:30:35
阅读次数:
164
rope教程:http://blog.csdn.net/iamzky/article/details/38348653Code(bzoj3673): 1 #include 2 #include 3 using namespace std; 4 using namespace __gnu_cxx; 5...
分类:
其他好文 时间:
2014-09-06 16:06:03
阅读次数:
329