BZOJ 3674 可持久化并查集加强版 可持久化并查集
2014-10-20 18:45
295 查看
题目大意:同3673 强制在线
同3673 只不过慢了一些0.0
这道题只写路径压缩比只写启发式合并要快一点点 两个都写就慢的要死0.0
改代码RE的可能是内存不够
同3673 只不过慢了一些0.0
这道题只写路径压缩比只写启发式合并要快一点点 两个都写就慢的要死0.0
改代码RE的可能是内存不够
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 200200 using namespace std; struct Tree{ Tree *ls,*rs; int num; }*fa[M],mempool[M*60],*C=mempool; int n,m,ans,now,version[M],tot; inline Tree* New_Node(Tree *_,Tree *__,int ___) { C->ls=_; C->rs=__; C->num=___; return C++; } Tree* Modify(Tree *p,int x,int y,int pos,int val) { int mid=x+y>>1; if(x==y) return New_Node(0x0,0x0,val); if(pos<=mid) return New_Node(Modify(p->ls,x,mid,pos,val),p->rs,0); else return New_Node(p->ls,Modify(p->rs,mid+1,y,pos,val),0); } int Access(Tree *p,int x,int y,int pos) { int mid=x+y>>1; if(x==y) return p->num; if(pos<=mid) return Access(p->ls,x,mid,pos); else return Access(p->rs,mid+1,y,pos); } int Find(int x) { int fx=Access(fa[now],1,n,x); if(!fx) return x; int t=Find(fx); Modify(fa[now],1,n,x,t); return t; } inline void Unite(int x,int y) { int fx=Find(x),fy=Find(y); if(fx==fy) return; ++tot; fa[tot]=Modify(fa[now],1,n,fy,fx); now=tot; } inline bool Query(int x,int y) { return Find(x)==Find(y); } int main() { int i,p,x,y; cin>>n>>m; fa[0]=New_Node(C,C,0); for(i=1;i<=m;i++) { scanf("%d",&p); switch(p) { case 1:scanf("%d%d",&x,&y),Unite(x^ans,y^ans);break; case 2:scanf("%d",&x),now=version[x^ans];break; case 3:scanf("%d%d",&x,&y),printf("%d\n",ans=Query(x^ans,y^ans));break; } version[i]=now; } }
相关文章推荐
- BZOJ 3673 可持久化并查集 by zky && 3674 可持久化并查集加强版
- BZOJ 3674 可持久化并查集加强版 可持久化并查集
- [BZOJ3674]可持久化并查集加强版&[BZOJ3673]可持久化并查集 by zky
- 【可持久化并查集】BZOJ3674[可持久化并查集加强版]题解
- 【BZOJ】3673: 可持久化并查集 by zky & 3674: 可持久化并查集加强版(可持久化线段树)
- BZOJ 3673: 可持久化并查集 by zky&&3674: 可持久化并查集加强版|主席树
- [主席树] BZOJ 3673 可持久化并查集 by zky BZOJ 3674 可持久化并查集加强版
- 【BZOJ 3674】可持久化并查集加强版&【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
- 【BZOJ】【3673】可持久化并查集 & 【3674】可持久化并查集加强版
- bzoj3674 可持久化并查集加强版 可持久化线段树
- BZOJ 3674: 可持久化并查集加强版/BZOJ 3673: 可持久化并查集 by zky 可持久化线段树
- BZOJ 3673/3674(可持久化并查集 by zky,可持久化并查集加强版-可持久化数组)
- 【BZOJ3673/3674】可持久化并查集/可持久化并查集加强版 可持久化线段树
- BZOJ 3674: 可持久化并查集加强版 可持久化并查集
- BZOJ 3674 可持久化并查集加强版 可持久化线段树
- bzoj 3674: 可持久化并查集加强版 可持久化线段树
- [BZOJ 3674]可持久化并查集加强版:可持久化并查集
- [BZOJ3674]可持久化并查集加强版(可持久化线段树+并查集)
- [bzoj] 3673 3674 可持久化并查集 || 可持久化数组
- bzoj 3674: 可持久化并查集加强版