传送门

我还以为可持久化并查集是什么呢

可持久化并查集===可持久化+++并查集===主席树+++并查集

考虑到每次状态只会修改一个集合

于是就想可持久化数组一样

维护一颗主席树来维护每个点的fafafa

#include<bits/stdc++.h>
using namespace std;
#define gc getchar
#define ll long long
inline int read(){char ch=gc();int res=0,f=1;while(!isdigit(ch)){if(ch=='-')f=-f;ch=gc();}while(isdigit(ch)){res=(res<<3)+(res<<1)+(ch^48),ch=gc();}return res*f;
}
#undef gc
const int N=200005;
const int Log=30;
int lc[N*Log],rc[N*Log],fa[N*Log],dep[N*Log],n,m,tot,rt[N*Log];
#define mid ((l+r)>>1)
void buildtree(int &u,int l,int r){u=++tot;if(l==r){fa[u]=l;return;}buildtree(lc[u],l,mid),buildtree(rc[u],mid+1,r);
}
void merge(int pre,int &u,int l,int r,int pos,int f){u=++tot,lc[u]=lc[pre],rc[u]=rc[pre];if(l==r){fa[u]=f,dep[u]=dep[pre];return;}if(pos<=mid)merge(lc[pre],lc[u],l,mid,pos,f);else merge(rc[pre],rc[u],mid+1,r,pos,f);
}
void update(int u,int l,int r,int pos){if(l==r){dep[u]++;return;}if(pos<=mid)update(lc[u],l,mid,pos);else update(rc[u],mid+1,r,pos);
}
int query(int u,int l,int r,int pos){if(l==r)return u;if(pos<=mid)return query(lc[u],l,mid,pos);else return query(rc[u],mid+1,r,pos);
}
int find(int u,int pos){int now=query(u,1,n,pos);if(fa[now]==pos)return now;return find(u,fa[now]);
}
int main(){n=read(),m=read();buildtree(rt[0],1,n);for(int i=1;i<=m;i++){int op=read(),x=read();if(op==1){rt[i]=rt[i-1];int y=read();int f1=find(rt[i],x),f2=find(rt[i],y);if(fa[f1]!=fa[f2]){if(dep[f1]>dep[f2])swap(f1,f2);merge(rt[i-1],rt[i],1,n,fa[f1],fa[f2]);if(dep[f1]==dep[f2])update(rt[i],1,n,fa[f2]);}}else if(op==2)rt[i]=rt[x];else if(op==3){int y=read();rt[i]=rt[i-1];int f1=find(rt[i],x),f2=find(rt[i],y);if(fa[f1]==fa[f2])puts("1");else puts("0");}}
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366344.html

【BZOJ3674】—可持久化并查集加强版(可持久化并查集)相关推荐

  1. bzoj 3674 可持久化并查集加强版——可持久化并查集

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用主席树维护 fa[ ]  和 siz[ ] .改 fa[ ] 和改 siz[ ] 都 ...

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

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

  3. 并查集-----好忧伤的并查集

    并查集-----好忧伤的并查集 主要还是看find的join俩个操作,测试数据 1 6 1 2 4 3 1 3 5 6 6 1 7 1 #include <iostream> #inclu ...

  4. Docker-redis集群+混合持久化

    了解Reids集群三种模式 主从复制模式 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据. 但是由于 ...

  5. HDU 3081 Marriage Match II (并查集+二分+最大流 | 并查集+二分图匹配)

    题意:n 个男生.n个女生玩游戏,每个女生都可以和她不讨厌的男生结婚,此外她的朋友如果也不讨厌这个男生,也可以和他结婚:对于女生,如果A和B是朋友,B和C是朋友,那么A和C也是朋友.每次游戏女生会找一 ...

  6. redis 主从同步、集群、持久化

    持久化 redis有两种方式实现持久化:RDB和AOF AOF:类似数据库WAL 机制,但是redis是先执行命令,然后在记录AOF日志,是一种写后日志而不是咱们常说的写前日志(这样做主要是为了red ...

  7. Nacos--概述、安装;注册、配置中心;集群、持久化以及开机自启

    Nacos的概述.安装:注册.配置中心:集群.持久化以及开机自启 1.Nacos概述.安装 1.1.前期准备 1.1.1.创建springcloud_parent 1.1.1.1.pom.xml 1. ...

  8. 毕业设计\毕业论文论文下载查询\查重降重\PPT工具合集

    目录 各类工科毕业设计源码下载 论文查询\下载 广西壮族自治区图书馆 国家哲学社会科学文献中心 OALib 查重 万方免费查重(应届生免费一次) 降重 秘塔写作猫 火龙果写作 PDF工具 PDF Sh ...

  9. 5 数据库缓存机制 redis集群 --SoringBoot整合redis--及redis命令集

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 1 上传安装包 2 解压Redis tar -xvf redis-5.0.4.tar.gz 3 安 ...

  10. rabbitmq基础5——集群节点类型、集群基础运维,集群管理命令,API接口工具

    文章目录 一.集群节点类型 1.1 内存节点 1.2 磁盘节点 二.集群基础运维 2.1 剔除单个节点 2.1.1 集群正常踢出正常节点 2.1.2 服务器异常宕机踢出节点 2.1.3 集群正常重置并 ...

最新文章

  1. Python与用户的交互 ,格式化输出的三种方式
  2. oracle10g 04030,一次ORA-04030问题的诊断(一)
  3. modelsim仿真中遇到的问题
  4. dubbo源码深度解析_Spring源码深度解析:手把手教你搭建Spring开发环境
  5. java.lang.NumberFormatException: For input string: “name”
  6. JSON合并补丁程序:JSON-P 1.1概述系列
  7. js的跨域问题和解决办法
  8. 朴宥拉短片突破了几百万的观看量
  9. AUTOCAD建模足球实体
  10. 微软sql服务器双机热备,office2014-SQL Server2014 R2 双机热备,保护你的数据
  11. 泛微OA设置系统默认水印
  12. IDEA插件开发(简单案例助你快速入门)
  13. c++基础 STL 第 0 篇:(模板)
  14. 数字化转型,金融行业的下一个引爆点
  15. Admob反馈利诱性质流量(无效流量)解决方案
  16. delphi7中的指针
  17. ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典
  18. 赵小楼《天道》《遥远的救世主》深度解析(35)你觉得叶晓明、冯世杰、刘冰是底层吗?
  19. 外卖红包领取公众号简单搭建
  20. Keras进行人民币面额识别(二)

热门文章

  1. 2015-UNet论文翻译
  2. 数字用户线(Digital Subscriber Line,DSL)
  3. matlab 贝塞尔曲线,matlab实现贝塞尔曲线绘图pdf查看
  4. 双机热备_配置BAS叠加NAT双机热备示例
  5. oracle gc chain,ORACLE GC 类等待事件汇总分析
  6. 【C++入门】C++ 运算符的重载
  7. Hive什么时候可以用别名?
  8. Kafka Producer生产者原理
  9. spark 连接mysql读取数据
  10. 从0开始html前端页面开发_CSS实现图像获取鼠标焦点逐渐变大动画效果