![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LCT
_Ark
这个作者很懒,什么都没留下…
展开
-
CF1172E Nauuo and ODT(LCT维护子树信息)
考虑枚举颜色,计算不包含此颜色的路径。那么把这种颜色看做白点,其他的看做黑点。那么每个黑色连通块的size的平方和就是要求的不包含此颜色的路径。要动态维护这个值,就用LCT。但是改一个点的颜色会涉及很多条边,那么我们把所有黑点向父亲连边,那么一个连通块一定是根节点为白色,根节点的儿子是若干黑连通块(这里可以设根节点的父亲为n+1,白色)。那么这样改变颜色只会在LCT上做1次修改。要维护答案,需要维护3个值。szszsz,表示整个子连通块的sizesizesize大小,即实儿子的sizesizesiz.原创 2020-05-16 17:09:13 · 322 阅读 · 0 评论 -
LOJ #2001. 「SDOI2017」树点涂色 (LCT + 线段树)
题面LOJ 2001题解转自luyixian的博客操作一我们发现这一个操作就是把树中某个节点到根节点的路径上的所有节点变成一样的颜色,又因为这棵树上有一个性质,同样颜色的点连接起来一定会是一条链,就可以想到LCT的access函数。所以我们将同种颜色的点看成LCT中同一棵splay上的点。操作二因为LCT已经维护了颜色了,所以我们不能再用LCT来维护路径之间的权值了。于是就可以想到...原创 2020-04-29 16:32:52 · 180 阅读 · 0 评论 -
重置一发LCT模板
加边、删边、单点修改、链上异或和#include <bits/stdc++.h>using namespace std;inline void read(int &num) { char ch; int flg = 1; while(!isdigit(ch=getchar()))if(ch=='-')flg = -flg; for(num=0; isdigit(ch)...原创 2019-08-18 13:22:05 · 101 阅读 · 0 评论 -
Luogu P3690【模板】Link Cut Tree (LCT板题)
省选前刷道LCT板题(话说之前没做这道题…)CODE#include<bits/stdc++.h>using namespace std;inline void read(int &num) { char ch; int flg = 1; while(!isdigit(ch=getchar()))if(ch=='-')flg = -flg; for(num=0; i...原创 2019-04-05 14:10:37 · 130 阅读 · 0 评论 -
BZOJ 2759 一个动态树好题 (LCT)
PoPoQQQ 再一次orz…没看得特别明白的可以回来看看蒟蒻的补充口胡我这里提一下关于splay维护的子树信息…在原树上考虑,对于每一个点iii都有这样一个信息xi=ki∗xfa[i]+bix_i=k_i*x_{fa[i]}+b_ixi=ki∗xfa[i]+bi.特别的,对于根节点rrr,设它的父亲为sf(special father)sf(special\ fath...原创 2019-03-21 21:40:02 · 138 阅读 · 0 评论 -
BZOJ 1180 [CROATIAN 2009]OTOCI // BZOJ 2843 极地旅行社 // Luogu P4321 [COCI 2009] OTOCI / 极地旅行社 (LCA板题)
emmm…标题卡着长度上限…LCT板题…(ε=ε=ε=┏(゜ロ゜;)┛)CODE#include <cctype>#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long ...原创 2019-03-21 19:04:52 · 114 阅读 · 0 评论 -
BZOJ 3514: Codechef MARCH14 GERALD07加强版 (LCT维护最大生成树+主席树)
题意给出nnn个点,mmm条边.多次询问,求编号在[l,r][l,r][l,r]内的边形成的联通块的数量,强制在线.分析LCTLCTLCT维护动态最大生成树,先将每条边依次加进去,若形成环就断掉最早加进去(编号最小)的边,然后记录early[]early[]early[]数组,表示第i条边弹掉了哪条边,若没有弹出边,early[i]=0early[i]=0early[i]=0然后每个询问...原创 2019-03-21 14:52:42 · 148 阅读 · 0 评论 -
BZOJ 2631 tree / Luogu P1501 [国家集训队]Tree II (LCT,多重标记)
题意一棵树,有删边加边,有一条链加/乘一个数,有询问一条链的和分析LCT,像线段树一样维护两个标记(再加上翻转标记就是三个),维护size,就行了CODE#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;...原创 2019-03-19 17:20:22 · 142 阅读 · 0 评论 -
BZOJ 2594: [Wc2006]水管局长数据加强版 (LCT维护最小生成树)
离线做,把删边转化为加边,那么如果加边的两个点不连通,直接连就行了.如果联通就找他们之间的瓶颈边,判断一下当前边是否更优,如果更优就cut掉瓶颈边,加上当前边.那怎么维护瓶颈边呢?把边也看做点,向两个点分别连边,那么只用维护最大值就行了.维护的时候保存编号,比较的时候就比较编号对应的边权,这样方便询问时删边.还有读入后注意储存 边(u,v)或者断边(u,v) 的时候,把较小值设为u,较大值设为...原创 2019-03-19 16:46:59 · 181 阅读 · 0 评论 -
BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (LCT维护连通性)
直接把x设为根,然后查询y所在联通块的根是不是x就行了.CODE#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;template<typename T>inline void read(T &a...原创 2019-03-19 16:03:12 · 116 阅读 · 0 评论 -
BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 (LCT维护深度)
要维护深度,就维护一下size就行了.access一下x,那么从根->x这一条链就独立成为一棵splay,那么splay的size节点数就是x的深度.CODE#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long L...原创 2019-03-19 16:01:31 · 118 阅读 · 0 评论 -
BZOJ 1036 [ZJOI2008]树的统计Count 动态维护树上求和与求最大值 LCT板题
模板,也可以用树链剖分+线段树做O(nlog2)O(nlog^2)O(nlog2)用LCT做O(nlog)O(nlog)O(nlog)在乘上一个大于30的常数…然后LCT比树剖慢一倍…CODE#include <cstdio>#include <cstring>#include <algorithm>using namespace std;type...原创 2019-03-19 15:57:04 · 150 阅读 · 0 评论