这个题目就是误导你的,据说zky用了rope。。所以苦于用并查集强行持久的似乎不太好做

这个题可以根据并查集的原理只加启发式合并优化

这样就可以常数巨大、空间巨大的nlogn了

启发式合并的过程 对于数值上来说 就是一个fu数组赋值为另一个的fu数组,所以相当于单点修改

sz单点加

撤销过程相当于回到前几个询问

很像主席树啊,还是单点修改,,就比较好做了

注:

1、复制粘贴注意修改

2、注意查询时用上一棵树

3、注意开点的情况,,已经有了就不能再建了

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define N 100005
int ch[(N<<2)*60][2],fu[(N<<2)*60],sz[(N<<2)*60],tot,op,a,b,c,cz,rt[N],n,m,i,j,x,y;
void jian(int o,int l,int r)
{if(l==r){sz[o]=1;fu[o]=l;return ;}int mid=(l+r)>>1;ch[o][0]=++tot;ch[o][1]=++tot;jian(ch[o][0],l,mid);jian(ch[o][1],mid+1,r);
}
void gai(int o,int l,int r,int last)
{if(l==r){if(op==1){fu[o]=c;sz[o]=sz[last];}  if(op==2){sz[o]+=c;    fu[o]=fu[last]; }if(op==3){c=sz[o];}if(op==4){c=fu[o];}return;}int mid=(l+r)>>1;if(a<=mid){
if(ch[o][0]==0)ch[o][0]=++tot;if(ch[o][1]==0)    ch[o][1]=ch[last][1];gai(ch[o][0],l,mid,ch[last][0]);  }else{if(ch[o][1]==0)ch[o][1]=++tot;if(ch[o][0]==0)  ch[o][0]=ch[last][0];gai(ch[o][1],mid+1,r,ch[last][1]);           }
}
int main()
{scanf("%d%d",&n,&m);rt[0]=++tot;jian(1,1,n);//syg=1;
for(i=1;i<=m;i++)
{
scanf("%d",&cz);
if(cz==1)
{
scanf("%d%d",&x,&y);
rt[i]=++tot; op=4;c=x;a=0;while(a!=c){a=c;gai(rt[i-1],1,n,rt[i-1])  ;}int c1=c;c=y;a=0;while(a!=c){ a=c;gai(rt[i-1],1,n,rt[i-1])   ;} int c2=c;int cc1,cc2;op=3;a=c1;gai(rt[i-1],1,n,rt[i-1]);cc1=c;a=c2;gai(rt[i-1],1,n,rt[i-1]);cc2=c;if(cc1>cc2)swap(cc1,cc2);op=1;a=c1;c=c2;gai(rt[i],1,n,rt[i-1]);op=2;a=c2;c=cc1;gai(rt[i],1,n,rt[i-1]);}
if(cz==2)
{scanf("%d",&x);rt[i]=rt[x];//syg=i;
}
if(cz==3)
{
scanf("%d%d",&x,&y);rt[i]=rt[i-1];op=4;c=x;a=0;while(a!=c){  a=c;gai(rt[i-1],1,n,rt[i-1]);}int c1=c;c=y;a=0;while(a!=c){    a=c;gai(rt[i-1],1,n,rt[i-1])   ;} int c2=c;if(c1==c2){printf("1\n");}else printf("0\n");
}
}
}

2017.9.27 可持久化并查集 失败总结相关推荐

  1. BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)

    Description Input Output Sample Input1 1 4 3 1 2 50 1 2 3 100 2 3 4 50 1 5 0 2 3 0 2 1 4 1 3 1 3 2 S ...

  2. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

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

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

  4. 洛谷P4768 [NOI2018]归程 [可持久化并查集,Dijkstra]

    题目传送门 归程 格式难调,题面就不放了. 分析: 之前同步赛的时候反正就一脸懵逼,然后场场暴力大战,现在呢,还是不会$Kruskal$重构树,于是就拿可持久化并查集做. 但是之前做可持久化并查集的时 ...

  5. bzoj 36733674 可持久化并查集加强版(可持久化线段树+启发式合并)

    CCZ在2015年8月25日也就是初三暑假要结束的时候就已经能切这种题了%%% 学习了另一种启发式合并的方法,按秩合并,也就是按树的深度合并,实际上是和按树的大小一个道理,但是感觉(至少在这题上)更好 ...

  6. 可持久化4--可持久化并查集

    可持久化并查集 可持久化并查集 = 按秩合并并查集 + 可持久化数组 首先并查集不能采用路径压缩,这是因为一次findR操作中,fa数组的很多位置(u->ru)会发生修改,由于每次修改都需要在可 ...

  7. 可持久化线段树【主席树】可持久化并查集【主席树+并查集】

    笼统的主席树原理 众所周知, 主席树是可以持久化的, 换言之你能知道你所维护信息的所有历史状态. 主席树是这样做的: 1. 首先建一颗朴素的线段树,代表初始状态 (下图黑色) , 也就是第0次操作后的 ...

  8. [NOI2018] 归程 可持久化并查集

    题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个n 个节点.m 条边的无向连通图(节点的编号从 1至 n).我们依次用 l,a描述一条边的长度.海拔. ...

  9. Claris’ Contest # 2 Day 2 Problem C. Dash Speed(分治+可持久化并查集+树剖)

    题面 题解 \(std\)爆栈了→_→ 我们先考虑一个简化的问题,如果只有加边的情况下如何动态维护直径 合并两棵树时,设\(a,b\)为\(A\)的直径的两个端点,\(c,d\)为\(B\)的直径的两 ...

最新文章

  1. 一个仿微信朋友圈的图片查看框架 - PhotoViewer
  2. JVM调优总结(五)-分代垃圾回收详述1
  3. 电商谋定重整智能物流生态-李玉庭:对话中国经济和信息化
  4. [转载].怎样在有限状态机中延时
  5. oracle 临时表空间的增删改查
  6. e.preventdefault() 别滥用
  7. python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取
  8. bash脚本使用记录
  9. c#项目遇到的问题及解决(1)
  10. primitive types
  11. 宜宾学院教务系统(金智教务系统)成绩爬虫
  12. matlab阶乘n函数,用matlab编写阶乘函数,调用该函数生成1!,……10!的阶乘表...
  13. jsp为什么被淘汰了?
  14. T1-商贸宝服务无法启动解决办法
  15. 今天聊:程序媛是否需要职业规划?
  16. Win10 GTX1050 TI 下NVIDIA驱动 CUDA和CUDNN的安装(超详细)!亲测有效!
  17. get请求报404 NOT FOUND问题的原因及解决。
  18. 前端 Switch 开关功能
  19. ipad协议835最新版
  20. unity 可视化渲染管线_如何为高端可视化设置Unity的高清渲染管道

热门文章

  1. cpu计算速度排行榜_CPU速度的计算方法和单位
  2. Kotlin学习笔记24 协程part4 协程的取消与超时
  3. Think in Java第四版 读书笔记3第七章第八章
  4. python卸载旧版本后依旧残余的问题
  5. 【java基础知识】swagger组件常用命令
  6. 小狼毫(Rime)输入法设置Shift直接上屏英文字符并切换为英文状态方法
  7. vue3 编译很慢_Vue 项目编译时间过长问题
  8. 河北省能力计算机提升培训,基于教师工作坊的河北省教师信息技术应用能力提升三位一体培训模式研究...
  9. linux python指向python3_linux下切换python2和python3(转)
  10. php微信商户下载对账单,浅析微信支付:下载对账单和资金账单