[Bjoi2014]大融合

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 394  Solved: 244
[Submit][Status][Discuss]

Description

小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。
这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够
联通的树上路过它的简单路径的数量。
例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因
为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-7路过了(3,8)。
现在,你的任务就是随着边的添加,动态的回答小强对于某些边的负载的
询问。

Input

第一行包含两个整数N,Q,表示星球的数量和操作的数量。星球从1开始编号。
接下来的Q行,每行是如下两种格式之一:
A x y 表示在x和y之间连一条边。保证之前x和y是不联通的。
Q x y 表示询问(x,y)这条边上的负载。保证x和y之间有一条边。
1≤N,Q≤100000

Output

对每个查询操作,输出被查询的边的负载。

Sample Input

8 6
A 2 3
A 3 4
A 3 8
A 8 7
A 6 5
Q 3 8

Sample Output

6
LCT维护子树信息
维护两个和,sum:总的和(虚边+实边),cnt:虚边和
需要修改的操作:
access:cnt+=sum[ch[x][1]]-sum[t]  x原来的实边变为虚边,加上他,t由虚边变为实边,减去他
link:x练到y上,x的子树全部成为y的虚子树,所以cnt[y]+=sum[x]
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
#define N 1000001
int ch[N][2],fa[N],sum[N],st[N],top,cnt[N];
bool tag[N];
struct LCT
{bool isroot(int x) { return ch[fa[x]][0]!=x && ch[fa[x]][1]!=x;}void update(int x) { sum[x]=1+cnt[x]+sum[ch[x][0]]+sum[ch[x][1]]; }int getson(int x) { return ch[fa[x]][1]==x; }void down(int x){ if(tag[x]) { tag[x]^=1; tag[ch[x][0]]^=1; tag[ch[x][1]]^=1;swap(ch[x][0],ch[x][1]);}}void rotate(int x){int y=fa[x],z=fa[y],l=getson(x),r=l^1;if(!isroot(y)) ch[z][ch[z][1]==y]=x;ch[y][l]=ch[x][r]; ch[x][r]=y;fa[x]=z; fa[y]=x; fa[ch[y][l]]=y;update(y);}void splay(int x){st[top=1]=x;for(int i=x;!isroot(i);i=fa[i]) st[++top]=fa[i];for(int i=top;i;i--) down(st[i]);while(!isroot(x)){int y=fa[x];if(!isroot(y)) rotate(getson(x)==getson(y) ? y : x);rotate(x);        }update(x);}void access(int x) { int t=0;while(x) { splay(x); cnt[x]+=sum[ch[x][1]]-sum[t]; ch[x][1]=t; update(x); t=x; x=fa[x];}}void make_root(int x) { access(x); splay(x); tag[x]^=1; }void split(int x,int y) { make_root(x); access(y); splay(y); }void link(int x,int y) { split(x,y); cnt[y]+=sum[x]; fa[x]=y; update(y);}
};
LCT lct;
int main()
{int n,m;scanf("%d%d",&n,&m);fill(sum+1,sum+n+1,1);char s[2]; int x,y;while(m--){scanf("%s%d%d",s,&x,&y);if(s[0]=='A') lct.link(x,y);else  lct.split(x,y),printf("%lld\n",1ll*sum[x]*(sum[y]-sum[x]));}
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7106520.html

[Bjoi2014]大融合相关推荐

  1. [BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并

    [BZOJ4530][Bjoi2014]大融合 试题描述 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是 ...

  2. LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)

    题面 没有权限号的可以去LOJ Sol 大家都知道,\(LCT\)上有许多实边和虚边 实边就是每棵\(Splay\)上的既认父亲又认儿子的边 虚边就是\(Splay\)和\(Splay\)之间只认父亲 ...

  3. BZOJ4530:[BJOI2014]大融合

    Description 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它 ...

  4. bzoj 4530 [Bjoi2014]大融合——LCT维护子树信息

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 LCT维护子树 siz .设 sm[ ] 表示轻儿子的 siz 和+1(1是自己的si ...

  5. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  6. Vue笔记大融合总结

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  7. 极客日报:阿里再度调整组织架构:天猫淘宝大融合,新设三大中心;苹果M1首席芯片设计师跳槽至英特尔

    一分钟速览新闻点! 腾讯接入数字人民币,微信支持数字人民币支付 阿里再度调整组织架构:天猫淘宝大融合,新设三大中心 七成清华毕业生进入体制内就业 北京最受欢迎:华为腾讯等科技企业也受青睐 钉钉近期将推 ...

  8. 重塑大融合体系,立体推进“业财合一”

    3月16日,主题为"智能会计 价值财务"的2023企业数智化财务创新峰会在北京召开.用友网络高级专家张伟发表了题为"聚势向新:智能会计助力企业高质量发展"的演讲 ...

  9. 全域旅游发展的“首都经验” , 全域旅游的十大融合

    一.北京发展全域旅游的历史渊源和现实基础 北京是全域旅游思想形成和理论创新的重要发源地之一,2008年延庆的千家店镇就提出"镇景合一",2011年延庆在全国率先提出建设" ...

最新文章

  1. PLUS | 包含蛋白质特异性的新型预训练方案
  2. BZOJ 3434 时空穿梭
  3. android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
  4. 如何理解SVM | 支持向量机之我见
  5. 渗透测试专题二之msf(kali)的攻击教程将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统...
  6. Azure PaaS服务密钥的安全性
  7. EGit(Git Eclipse Plugin)使用
  8. 快捷支付与网银支付的对比
  9. Django REST framework API 指南(19):内容协商
  10. html字体加载太慢,字体加载CSS @font-face性能优化的常用策略
  11. 量化涌现:信息论方法识别多变量数据中的因果涌现
  12. OSChina 周三乱弹 ——我们IT工程师会缺女友?
  13. android手机游戏-三国无双(二)
  14. 关于ruoyi验证码无法显示的问题
  15. RTKLIB中RTK定位原理(一)
  16. 目标规划模型:求解思路、序贯式算法
  17. “计算机程序设计能力考试(乙级)”真题刷题(三)
  18. 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱
  19. 至尊智能家居项目开发全过程
  20. Chloroplot叶绿体基因组圈图可视化的新工具

热门文章

  1. 慕课乐学python单元测试答案_乐学Python_章节测验,期末考试,慕课答案查询公众号...
  2. iOS进阶之架构设计MVVM模式实践(11)
  3. (0090)iOS开发之本地文件预览的三种方法(1)
  4. html隐藏二级导航的制作代码,HTML+CSS实现二级导航
  5. 后羿采集器怎么导出数据_推荐爬虫神器后羿采集器,小白也能一键采集数据
  6. Appium——unknown error: cannot activate web view
  7. 记工作中的git遇到的问题
  8. 数据库查询 sysobjects
  9. spring全局异常抓取validation校验信息
  10. bootstrapDialog插件集成datatables插件遇到的异常