思路: 用主席树维护并查集森林,每次连接时新增结点。 似乎并不需要启发式合并,我随随便便写了一个就跑到了3674第一页?3673是这题的弱化版,本来写个暴力就能过,现在借用加强版的代码(去掉异或),直接吊打暴力程序。 ...
分类:
其他好文 时间:
2017-07-14 19:32:43
阅读次数:
144
Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n,m<=2*10^4 n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k ...
分类:
编程语言 时间:
2017-01-07 01:16:51
阅读次数:
205
线段树只用叶子节点感觉莫名浪费,,, 感觉真好写(刚从未来程序逃回来的人) ...
分类:
编程语言 时间:
2016-10-20 22:07:56
阅读次数:
217
bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集。 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以使合并均摊复杂度为O(nlog2n)。可持久化线段树实际上就是在更新节点时按主席树的插入方式新建一条 ...
分类:
其他好文 时间:
2016-07-24 17:48:26
阅读次数:
242
Descriptionn个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出00 11 #include 12 #include 13 #include 14 #include 15 #...
分类:
其他好文 时间:
2015-03-13 17:56:45
阅读次数:
187
题目大意:给定n个集合,提供三种操作:
1.合并a,b所在集合
2.回到第k次操作之后的状态
3.询问a,b是否在同一集合
可持久化并查集0.0 实现方式是用可持久化线段树实现可持久化数组维护可持久化并查集。。。
至于可持久化数组,每条路径上只有叶节点的位置的num域是有意义的,感觉无比浪费0.0 可是不这样还真没法维护0.0
合并时本来应该按照每个节点的深度之和维护,结果手残懒得写,...
分类:
其他好文 时间:
2014-10-20 19:30:18
阅读次数:
185
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