BZOJ4530 [Bjoi2014]大融合
来源:互联网 发布:已备案域名购买 编辑:程序博客网 时间:2024/05/01 19:25
LCT维护子树大小即可
有关LCT维护子树信息的讲解可以看这里
#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<vector>#include<stack>#include<queue>#include<map>#include<set>#include<bitset>using namespace std;#define MAXN 100010#define MAXM 1010#define ll long long#define INF 1000000000#define MOD 1000000007#define eps 1e-8int fa[MAXN],son[MAXN][2],siz[MAXN],Siz[MAXN];bool rev[MAXN];int st[MAXN],tp;int n,m;void pt(){int i;for(i=1;i<=n;i++){cout<<son[i][0]<<' '<<son[i][1]<<'!'<<fa[i]<<'!'<<siz[i]<<' '<<' '<<Siz[i]<<endl;}cout<<endl;}inline bool ir(int x){return son[fa[x]][0]!=x&&son[fa[x]][1]!=x;}inline void torev(int x){swap(son[x][0],son[x][1]);rev[x]^=1;}inline void pd(int x){if(rev[x]){torev(son[x][0]);torev(son[x][1]);rev[x]=0;}}inline void ud(int x){siz[x]=siz[son[x][0]]+siz[son[x][1]]+1+Siz[x];}inline void cot(int x,int y,int z){if(x){fa[x]=y;}if(y){son[y][z]=x;}}inline void rot(int x,bool z){int xx=fa[x],xxx=fa[xx];int t=son[x][z];cot(son[x][z],xx,z^1);if(ir(xx)){fa[x]=xxx;}else{cot(x,xxx,son[xxx][1]==xx);}cot(xx,x,z);ud(xx);}inline void apd(int x){int i;st[++tp]=x;for(i=x;!ir(i);i=fa[i]){st[++tp]=fa[i];}for(;tp;tp--){pd(st[tp]);}}void splay(int x){apd(x);while(!ir(x)){int xx=fa[x],xxx=fa[xx];if(ir(xx)){rot(x,son[xx][0]==x);}else{bool z=son[xxx][0]==xx;if(son[xx][z]==x){rot(x,z^1);rot(x,z);}else{rot(xx,z);rot(x,z);}}}ud(x);}inline void acs(int x){int t=0;while(x){splay(x);Siz[x]+=siz[son[x][1]];son[x][1]=t;Siz[x]-=siz[t];ud(x);t=x;x=fa[x];}}inline void reboot(int x){acs(x);splay(x);torev(x);}inline void link(int x,int y){reboot(x);reboot(y);fa[x]=y;Siz[y]+=siz[x];ud(y);}int main(){int i,x,y;char o[10];scanf("%d%d",&n,&m);for(i=1;i<=n;i++){siz[i]=1;}for(i=1;i<=m;i++){scanf("%s%d%d",o,&x,&y);if(o[0]=='A'){link(x,y);}else{reboot(x);acs(y);splay(x);printf("%lld\n",(ll)(Siz[y]+1)*(siz[x]-Siz[y]-1));}}return 0;}/*8 6A 2 3A 3 4A 3 8A 8 7A 6 5Q 3 810 5A 1 2 Q 1 2 */
0 0
- BZOJ4530 [Bjoi2014]大融合
- 【bzoj4530】[Bjoi2014]大融合 并查集+线段树合并
- [BZOJ4530][Bjoi2014]大融合(树链剖分+并查集)
- [BZOJ4530][Bjoi2014][LCT维护子树信息]大融合
- bzoj4530 [Bjoi2014]大融合(LCT维护子树大小)
- bzoj4530 [Bjoi2014]大融合 (LCT维护子树信息)
- bzoj4530: [Bjoi2014]大融合 //线段树分治+并查集
- 【bzoj4530】【BJOI2014】【大融合】【dfs序+线段树合并+并查集】
- bzoj4530[Bjoi2014]大融合 线段树合并+dfs序+并查集
- BZOJ4530: [Bjoi2014]大融合(LCT维护子树,线段树合并)
- 【BJOI2014】大融合
- bzoj 4530: [Bjoi2014]大融合
- JZOJ 3766. 【BJOI2014】大融合
- [BZOJ4530]-大融合-LCT维护子树信息
- BZOJ 4530 [Bjoi2014]大融合 [LCT]
- 【BJOI2014】大融合 LCT维护子树信息
- 又是一个sb错误--附带 bzoj4530 大融合 题解
- BZOJ4530 BJOI 2014 大融合 LCT维护子树信息
- velocity map list 遍历
- FMDB官方使用文档
- 都说依赖注入,我就从实现的角度来一发,以android作为引子..
- C++多态性
- Boostrap实现的登录界面
- BZOJ4530 [Bjoi2014]大融合
- Javascript学习总结
- 数据库 coreData 入门(转)
- 笔记0519
- 软件开发实战(一)
- 人人快递是怎么连接陌生人相互传达爱的
- Unity3D脚本各函数执行顺序And不同脚本的执行顺序
- 关于removeFromSuperview的一系列处理
- 给 Xcode 添加空白模板