LCT:link-cut-tree 先粘个板子(可能理解深刻?) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { int aa=0, ...
分类:
其他好文 时间:
2019-12-22 10:40:05
阅读次数:
95
[BJOI2014]大融合(Link Cut Tree) 题面 给出一棵树,动态加边,动态查询通过每条边的简单路径数量。 分析 通过每条边的简单路径数量显然等于边两侧节点x,y子树大小的乘积。 我们知道裸的LCT只能维护链的信息,那么怎么维护子树大小呢?我们只需要对于节点x维护x的所有虚儿子的子树大 ...
分类:
其他好文 时间:
2019-12-01 17:09:23
阅读次数:
97
这一篇博客将教你什么? 如何用LCT打延迟标记,LCT和线段树延迟标记间的关系,为什么延迟标记要这样打。 ——正片开始—— 学习这一篇博客前,确保你会以下知识: Link-Cut-Tree,普通线段树 当然,不会也没有关系,你可以先收藏这篇博客,等你学了以后再来看。 最好通过了这一道题:【模板】线段 ...
分类:
其他好文 时间:
2019-10-31 17:57:36
阅读次数:
91
经典也是最基础的Link Cut Tree维护子树问题。我们考虑维护子树有哪些不同,无非就是需要去维护虚儿子,在这里就是维护虚儿子的size,记为si 这时的更新来源除了左右儿子和自己以外还有虚儿子 由于access操作是做虚实互换的过程,会对虚儿子数据产生影响 授予了新的父子关系,但这种关系是通过 ...
分类:
其他好文 时间:
2019-10-19 21:03:57
阅读次数:
94
离线后逆序处理所有操作,那么就变成了加边询问,根据MST的性质,显然维护MST询问链上max即可 cpp include using namespace std; define int long long const int N = 1000000; int n,m,q,t1,t2,t3,t4; s ...
分类:
其他好文 时间:
2019-10-19 20:50:33
阅读次数:
89
有了LCT这不就是思博题了吗 cpp include using namespace std; const int N = 1000000; int n,m,t1,t2,t3; char op[5]; struct LinkCutTree { int top, q[N], ch[N][2], fa[ ...
分类:
其他好文 时间:
2019-10-19 20:25:35
阅读次数:
75
干脆整个LCT模板吧。 缺个链上修改和子树操作,链上修改的话join(u,v)然后把v splay到树根再打个标记就好。 至于子树操作...以后有空的话再学(咕咕咕警告) ...
分类:
其他好文 时间:
2019-10-07 21:04:55
阅读次数:
82
P3690 【模板】Link Cut Tree (动态树) #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i= ...
分类:
其他好文 时间:
2019-10-06 13:11:01
阅读次数:
64
"$Problem\ Link$" 题目大意 你被给定一棵n个点的树,点从1到n编号。每个点可能有两种颜色:黑或白。我们定义dist(a,b)为点a至点b路径上的边个数。 一开始所有的点都是黑色的。 要求作以下操作: 0 i 将点i的颜色反转(黑变白,白变黑) 1 v 询问dist(u,v)的最小值 ...
分类:
其他好文 时间:
2019-09-12 13:20:07
阅读次数:
87