P4219-[BJOI2014]大融合【LCT】
正题
题目链接:https://www.luogu.com.cn/problem/P4219
题目大意
nnn个点,每次有操作
- 加入一条边,保证该边连接了两个不同的连通块
- 询问经过一条边的路径数量
解题思路
考虑如何用LCTLCTLCT维护虚子树信息,只要在断边的时候把虚子树的信息维护进该节点即可。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;
const int N=1e5+10;
int n,q,siz[N],size[N];
struct Link_Cut_Tree{int fa[N],t[N][2];bool r[N];stack<int> s;bool Nroot(int x){return fa[x]&&(t[fa[x]][1]==x||t[fa[x]][0]==x);}bool Direct(int x){return t[fa[x]][1]==x;}void PushUp(int x){size[x]=size[t[x][0]]+size[t[x][1]]+siz[x]+1;return;}void Rev(int x){r[x]^=1;swap(t[x][0],t[x][1]);return;}void PushDown(int x){if(!r[x])return;Rev(t[x][0]);Rev(t[x][1]);r[x]=0;return;}void Rotate(int x){int y=fa[x],z=fa[y];int xs=Direct(x),ys=Direct(y);int w=t[x][xs^1];t[x][xs^1]=y;t[y][xs]=w;if(Nroot(y))t[z][ys]=x;if(w)fa[w]=y;fa[x]=z;fa[y]=x;PushUp(y);PushUp(x);return;}void Splay(int x){s.push(x);while(Nroot(s.top()))s.push(fa[s.top()]);while(!s.empty())PushDown(s.top()),s.pop();while(Nroot(x)){int y=fa[x];if(!Nroot(y))Rotate(x);else if(Direct(x)==Direct(y))Rotate(y),Rotate(x);else Rotate(x),Rotate(x);}return;}void Access(int x){for(int y=0;x;x=fa[y=x]){Splay(x);siz[x]-=size[y]-size[t[x][1]];t[x][1]=y;PushUp(x);}return;}void MakeRoot(int x){Access(x);Splay(x);Rev(x);return;}void Link(int x,int y){MakeRoot(x);MakeRoot(y);fa[x]=y;siz[y]+=size[x];PushUp(y);return;}void Split(int x,int y){MakeRoot(x);Access(y);Splay(y);return;}
}LCT;
int main()
{scanf("%d%d",&n,&q);for(int i=1;i<=n;i++)size[i]=1;while(q--){char op[5];int x,y;scanf("%s %d%d",op,&x,&y);if(op[0]=='Q'){LCT.Split(x,y);printf("%lld\n",1ll*(siz[y]+1)*(siz[x]+1));}else LCT.Link(x,y);}return 0;
}
P4219-[BJOI2014]大融合【LCT】相关推荐
- [BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并
[BZOJ4530][Bjoi2014]大融合 试题描述 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是 ...
- bzoj 4530 [Bjoi2014]大融合——LCT维护子树信息
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 LCT维护子树 siz .设 sm[ ] 表示轻儿子的 siz 和+1(1是自己的si ...
- [Bjoi2014]大融合
[Bjoi2014]大融合 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 394 Solved: 244 [Submit][Status][Dis ...
- LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)
题面 没有权限号的可以去LOJ Sol 大家都知道,\(LCT\)上有许多实边和虚边 实边就是每棵\(Splay\)上的既认父亲又认儿子的边 虚边就是\(Splay\)和\(Splay\)之间只认父亲 ...
- BZOJ4530:[BJOI2014]大融合
Description 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它 ...
- BZOJ 4530 大融合 LCT维护子树信息
题意: N<=1e5个点,Q<=1e5个操作. 支持加一条边(u,v)(保证图是森林).询问经过边(u,v)的简单路径条数(保证(u,v)存在). 分析: 数据结构学傻了的我,表示并不会用 ...
- LOJ#2230. 「BJOI2014」大融合
LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...
- Vue笔记大融合总结
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...
- 极客日报:阿里再度调整组织架构:天猫淘宝大融合,新设三大中心;苹果M1首席芯片设计师跳槽至英特尔
一分钟速览新闻点! 腾讯接入数字人民币,微信支持数字人民币支付 阿里再度调整组织架构:天猫淘宝大融合,新设三大中心 七成清华毕业生进入体制内就业 北京最受欢迎:华为腾讯等科技企业也受青睐 钉钉近期将推 ...
- 重塑大融合体系,立体推进“业财合一”
3月16日,主题为"智能会计 价值财务"的2023企业数智化财务创新峰会在北京召开.用友网络高级专家张伟发表了题为"聚势向新:智能会计助力企业高质量发展"的演讲 ...
最新文章
- reindex-maven 私服(nexus)架设以及项目管理中遇到的问题及解决方案(updating)
- MATLAB利用YCBCR切割出人脸头像
- pandas 删除列名字符串中的空格
- 年度国家科学技术奖:高文周志华王海峰唐杰等上榜,两位“30后”院士获最高奖...
- mysql 代理 a_Keepalived+Mysql+Haproxy
- LeetCode 640. 求解方程(字符串)
- 淘宝万亿级海量交易订单存储在哪?
- java中流_java 中流的使用
- Python自省(反射)指南 1
- mappedbytebuffer_小师妹学JavaIO之:MappedByteBuffer多大的文件我都装得下
- bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压)
- html5 前端js框架,前端h5框架总结
- 黑客电影预言或成真,英国核潜艇安全问题堪忧
- 浅浅总结一下HTML吧
- 贾扬清担任阿里开源技术委员会负责人,开源升级为阿里技术战略之一
- java中文转拼音_java中文转拼音
- TOC和常识管理 读高德拉特《关键链》
- P3396 哈希冲突 (根号算法)
- 应用ceph块存储(ceph-13.2.10)
- shell入门基础知识
热门文章
- java sorted_Java记录 -59- SortedSet
- 华为交换机初始化_华为交换机恢复出厂设置
- oracle java写目录权限_oracle分配权限 学习笔记--转载
- 电子工程系庆贺电贺信_创造下一代光电子集成电路
- 利用vector实现一对一(pair<int,int>)
- C++ 学习之旅(11)——类和结构中的static
- fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行
- mysql boolean_产品操作MySQL第7篇 – 运算符 – IS NULL
- Hibernate懒加载问题的5种解决方案
- 1575 Gcd and Lcm