本质上是维护两个可持久化数组,用可持久化线段树维护. 1 /************************************************************** 2 Problem: 3673 3 User: idy002 4 Language: C+...
分类:
其他好文 时间:
2015-06-07 15:47:31
阅读次数:
127
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
题目大意:同3673 强制在线同3673 仅仅只是慢了一些0.0这道题仅仅写路径压缩比仅仅写启示式合并要快一点点 两个都写就慢的要死0.0改代码RE的可能是内存不够#include#include#include#include#define M 200200using namespace std;...
分类:
其他好文 时间:
2015-01-02 19:55:52
阅读次数:
237
http://www.lydsy.com/JudgeOnline/problem.php?id=3674http://www.lydsy.com/JudgeOnline/problem.php?id=3673双倍经验啦啦啦。。给主席树换了个名称果然高大上。。。首先要可持久化并查集其实就是可持久化数组...
分类:
其他好文 时间:
2014-12-08 19:33:19
阅读次数:
260
题目大意:维护一种数据结构实现可持久化并查集。
思路:利用可持久化线段树实现可持久化数组维护可持久化并查集。(不知道3674哪里加强了。。。
CODE:
#include
#include
#include
#include
#define RANGE 8000010
#define MAX 200200
using namespace std;
struct...
分类:
其他好文 时间:
2014-12-03 09:22:29
阅读次数:
170
题目大意:同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
题目大意:给定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
对于像UVA 11987 Almost Union-Find这样的题目,要求把一个元素从一个集合中剥离的情况,我们只需要新建一个节点然后………. 还是看代码吧: inline void move(int x,int y) // 把x从y集合中剥离{ int fx = find(id[x]),fy =...
分类:
其他好文 时间:
2014-08-16 14:58:50
阅读次数:
231