总感觉到现在才来写这题有点奇怪。

  并查集如果按秩合并的话,每次合并只会修改一个点的父亲。

  用可持久化线段树来实现可持久化数组就行了。。

  然而我写的是按子树大小合并。。结果比按秩合并慢了一点>_<

  中途因为没看清楚 “回到第k次操作之后的状态” WA了好几发= =

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=;
const int mxnode=maxn*;
int lc[mxnode],rc[mxnode],sz[mxnode],num[mxnode],fa[mxnode],rt[maxn];
int i,j,k,n,m,tot,x,y; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while(rx<''||rx>'')rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
inline int getpos(int x){
int p,a,b,mid;
p=rt[i-],a=,b=n;
while(a<b){
mid=(a+b)>>;
if(x<=mid)p=lc[p],b=mid;
else p=rc[p],a=mid+;
}
return p;
}
inline void upd(int pre,int &x,int a,int b,int pos,int v){
x=++tot;
if(a==b){num[x]=pos,fa[x]=v,sz[x]=sz[pre];return;}
int mid=(a+b)>>;
if(pos<=mid)rc[x]=rc[pre],upd(lc[pre],lc[x],a,mid,pos,v);
else lc[x]=lc[pre],upd(rc[pre],rc[x],mid+,b,pos,v);
}
inline void uni(int x,int y){
for(x=getpos(x);num[x]!=fa[x];x=getpos(fa[x]));
for(y=getpos(y);num[y]!=fa[y];y=getpos(fa[y]));
if(x==y){rt[i]=rt[i-];return;}
if(sz[x]<sz[y])
upd(rt[i-],rt[i],,n,num[x],num[y]),sz[y]+=sz[x];
else upd(rt[i-],rt[i],,n,num[y],num[x]),sz[x]+=sz[y];
}
void build(int &x,int a,int b){
x=++tot;
if(a==b){sz[x]=,num[x]=fa[x]=a;return;}
build(lc[x],a,(a+b)>>),build(rc[x],((a+b)>>)+,b);
} int main(){
n=read(),m=read();
build(rt[],,n);int id;
for(i=;i<=m;i++){
id=read();//printf("now: %d\n",now);
if(id==)rt[i]=rt[read()];
if(id==)x=read(),y=read(),uni(x,y);
if(id==){
x=read(),y=read();
for(x=getpos(x);num[x]!=fa[x];x=getpos(fa[x]));
for(y=getpos(y);num[y]!=fa[y];y=getpos(fa[y]));
printf("%d\n",x==y);
rt[i]=rt[i-];
}
}
return ;
}

[bzoj3673] 可持久化并查集 by zky的更多相关文章

  1. BZOJ3673 可持久化并查集 by zky 【主席树】

    BZOJ3673 可持久化并查集 by zky Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a ...

  2. bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版

    bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集. 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以 ...

  3. [bzoj3673][可持久化并查集 by zky] (rope(可持久化数组)+并查集=可持久化并查集)

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  4. [BZOJ3674]可持久化并查集加强版&[BZOJ3673]可持久化并查集 by zky

    思路: 用主席树维护并查集森林,每次连接时新增结点. 似乎并不需要启发式合并,我随随便便写了一个就跑到了3674第一页?3673是这题的弱化版,本来写个暴力就能过,现在借用加强版的代码(去掉异或),直 ...

  5. BZOJ3673 可持久化并查集 by zky 可持久化 并查集

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3673 题意概括 n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的 ...

  6. bzoj3673: 可持久化并查集 by zky&&3674: 可持久化并查集加强版

    主席树可持久化数组,还挺好YY的 然而加强版要路径压缩.. 发现压了都RE 结果看了看数据,默默的把让fx的父亲变成fy反过来让fy的父亲变成fx 搞笑啊 #include<cstdio> ...

  7. 【BZOJ3673】&&【BZOJ3674】: 可持久化并查集 by zky 可持久化线段树

    没什么好说的. 可持久化线段树,叶子节点存放父亲信息,注意可以规定编号小的为父亲. Q:不是很清楚空间开多大,每次询问父亲操作后修改的节点个数是不确定的.. #include<bits/stdc ...

  8. 3673: 可持久化并查集 by zky

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2170  Solved: 978[Submit][Status ...

  9. Bzoj 3673: 可持久化并查集 by zky(主席树+启发式合并)

    3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MB Description n个集合 m个操作 操作: 1 a b 合并a,b所在集 ...

随机推荐

  1. iOS tableViewCell 在cell赋值、网络加载照片位置偏移大小错乱,做一个类似qq列表的tableview 更新3

    更新3: 问题 加载慢!(一时间给的处理负载过大,要分散)在下载图片,判断状态后 对每个cell对图片灰置图片处理保存,影响了主线程的操作 :上拉加载时,无法上下滑动tableview 无法点击cel ...

  2. iOS tableViewCell 在自定义高度方法中遇到的问题,cell高度为0,cell显示不出来,cell直接显示第几个而不是...cell显示个数不对

    遇到以上问题可以看看你的cell高度中是否有,自定的高度,有了继续看,没有了继续百度... 在文字排版中,少不了自适应文字高度,行间距什么的:显然cell的高度时不固定的,如果复用自定义的cell的话 ...

  3. 用keras作CNN卷积网络书本分类(书本、非书本)

    本文介绍如何使用keras作图片分类(2分类与多分类,其实就一个参数的区别...呵呵) 先来看看解决的问题:从一堆图片中分出是不是书本,也就是最终给图片标签上:“书本“.“非书本”,简单吧. 先来看看 ...

  4. 转战Hexo

    从之前的转战farbox,到现在又转战Hexo,真是不折腾不成魔.要说farbox有什么不好,可能唯一的不好就是它要求与Dropbox关联吧,这对于大部分国内用户来说是无法接受的,写文章之前一想到还要 ...

  5. 外卖app的header组件开发

    1.webpack框架创建 # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpa ...

  6. Docker安装入门 -- 中间件镜像

    Docker安装入门 -- 中间件镜像 php-fpm 1.docker build -t csphere/php-fpm:5.4 .   //在当前目录下创建镜像 2.docker run -d - ...

  7. MySQL小抄

    以下是MySQL5.7中的一些tips&tricks(持续更新中): Use of an unqualified * with other items in the select list m ...

  8. 使用图片地图减少HTTP请求数量

    前言 最近在看<高性能网站建设>,记录一下所学. 现在很多网站都是图片形式的导航,点击图片跳转到对应的链接.如果导航项目很多的话,图片的数量就会很多,每需要加载一张图片就会多一个HTTP请 ...

  9. 房上的猫:java中的包

    包 1.作用:  (1)包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件  (2)防止命名冲突:    java中只有在不同包中的类才能重名  (3)包允许在更广的范围内保护类,数 ...

  10. 浏览器根对象window之screen

    1. screen 1.1 availHeight/Width screen.availWidth返回浏览器窗口可占用的水平宽度(单位:像素). screen.availHeight返回浏览器窗口在屏 ...