正题

luogu 4219


题目大意

给你一棵树(初始都无连边),让你进行以下操作:

1.连接两个点

2.查询一条边被多少条路径经过


解题思路

因为有边的修改,可以用LCT来维护这棵树

一条边的经过次数,就相当于连接的两棵子树的大小之积

那么维护子树大小即可


代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100010
using namespace std;
int n, q, x, y;
char c;
struct LCT
{#define ls son[x][0]#define rs son[x][1]int p[N], siz[N], size[N], fa[N], son[N][2];bool NR(int x){return fa[x] && (son[fa[x]][0] == x || son[fa[x]][1] == x);}bool IRS(int x){return son[fa[x]][1] == x;}void push_up(int x){size[x] = size[ls] + size[rs] + siz[x];return;}void pushr(int x){p[x] ^= 1;swap(ls, rs);return;}void push_down(int x){if (p[x]){p[x] = 0;if (ls) pushr(ls);if (rs) pushr(rs);}return;}void rotate(int x){int y = fa[x], z = fa[y], k = IRS(x), g = son[x][!k];if (NR(y)) son[z][IRS(y)] = x;if (g) fa[g] = y;fa[y] = x;fa[x] = z;son[x][!k] = y;son[y][k] = g;push_up(y);return;}void push_hall(int x){if (NR(x)) push_hall(fa[x]);push_down(x);return;}void Splay(int x){push_hall(x);while(NR(x)){if (NR(fa[x])){if (IRS(x) == IRS(fa[x])) rotate(fa[x]);else rotate(x);}rotate(x);}push_up(x);return;}void access(int x){for (int y = 0; x; x = fa[y = x]){Splay(x);siz[x] += size[rs] - size[y];rs = y;push_up(x);}return;}void make_root(int x){access(x);Splay(x);pushr(x);return;}void Split(int x, int y){make_root(x);access(y);Splay(y);return;}void link(int x, int y){make_root(x);make_root(y);fa[x] = y;siz[y] += size[x];push_up(y);return;}
}T;
int main()
{scanf("%d%d", &n, &q);for (int i = 1; i <= n; ++i)T.size[i] = T.siz[i] = 1;while(q--){scanf("%s%d%d", &c, &x, &y);if (c == 'A') T.link(x, y);else{T.Split(x, y);printf("%lld\n", 1ll * T.siz[x] * T.siz[y]);}}return 0;
}

【LCT】大融合(luogu 4219)相关推荐

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

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

  2. [Bjoi2014]大融合

    [Bjoi2014]大融合 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 394  Solved: 244 [Submit][Status][Dis ...

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

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

  4. Vue笔记大融合总结

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

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

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

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

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

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

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

  8. 【Neuralink与大脑的神奇未来】Part 6:大融合

    目录 Part 1: The Human Colossus 人类的巨像 Part 2: The Brain 大脑 Part 3: Brain-Machine Interfaces 脑机接口 Part ...

  9. [lct] Luogu P4219 大融合

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

最新文章

  1. java 小波去噪原理_小波去噪的基本知识
  2. centos 7安装_VMware Workstation安装centos
  3. Starling框架帮助手册中文版(PDF下载)
  4. 论文浅尝 | KGQR: 用于交互式推荐的知识图谱增强Q-learning框架
  5. linux arm桌面程序,Electron 从零创建一个 Windows/OS X/Linux 的桌面可执行程序
  6. Delphi 日期函数列表
  7. 转 Java工程师成神之路
  8. 腾讯实习生招聘之总体感悟
  9. 国庆必看9大区块链电影!建议收藏!
  10. mysql_dc.ncf_my live PC / ThinkCentre M920x Tiny / ThinkStation P330 Tiny
  11. clang diagnostic
  12. 第十五篇,man手册
  13. Python时间戳转为北京时间
  14. python-计算机视觉-OpenCV-调色板
  15. Python习题十三套汇总
  16. keil 调用 nop警告 174-Dexpression has no effect
  17. 射频芯片工作的心脏——晶振
  18. Linux C 获取系统时间秒/毫秒/微秒/纳秒
  19. linux 扫描局域网内所有主机
  20. 张嘉佳《云边有个小卖部》| 希望和悲伤,都是一缕光

热门文章

  1. 二叉树N叉数的前中后序遍历总结,python实现递归法和迭代法
  2. 查漏补缺方为上策!!两万六字总结vue的基本使用和高级特性,周边插件vuex和vue-router任你挑选
  3. [Redis6]常用数据类型_Zset有序集合
  4. Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)
  5. Redis高可用基石--主从同步
  6. 里加一列为1_9月1号新宠物食品法规实施啦,辣鸡宠物食品遭殃,你也可能违法...
  7. Spring bean 初始化顺序
  8. 深入理解 JVM Class文件格式(五)
  9. 常系数齐次线性递推学习笔记
  10. CF653F. Paper task