
数据结构---LCT
文章平均质量分 72
forezxl
水君一枚
展开
-
LCT(动态树)(洛谷P3690)(BZOJ3282)
推荐这篇论文前置技能Splay和树链剖分简介动态树问题, 简称LCT,近几年在OI中兴起的一种新型问题,是一类要求维护一个有根树森林,支持对树的分割, 合并等操作的问题。算法用途比如维护一个数据结构,有如下操作:1.查询路径权值和。 2.查询LCA。 3.修改单个点的权值。 4.断开两个点,使之成为两棵树。 5.合并两个点,使之成为一颗树。当然还...原创 2018-01-07 19:44:00 · 580 阅读 · 0 评论 -
BZOJ4025: 二分图
LCT题目传送门Orz写分治+并查集的巨佬考虑用LCT维护,但是如果直接模拟的话肯定不行。那么可以维护一个关于消失时间的最大生成树,这样可以保证每条非树边不会重复成为树边,每条树边被删去后也不会重新变成树边。代码:#include<cctype>#include<cstdio>#include<cstring>#include<algori原创 2018-09-23 10:26:13 · 163 阅读 · 0 评论 -
BZOJ3091: 城市旅行
LCT题目传送门Orz PoPoQQQ大爷前三个操作都是板子,关键是第4个操作的维护。分母为(size2)size\choose2(2size),那么只要维护分子即可。对于大小为sizesizesize的节点,分子即为∑i=1size(size−i+1)×i×wi\sum_{i=1}^{size}(size-i+1)\times i\times w_i∑i=1size(size−i+1)...原创 2018-09-19 21:00:23 · 194 阅读 · 0 评论 -
洛谷P1501 [国家集训队]Tree II(BZOJ2631)
LCT洛谷题目传送门 BZOJ题目传送门记一个乘标记和一个加标记来维护。如果打过维护区间乘和加操作的线段树的话这道题就很轻松了,但是LCT因为会动还要维护一个size。其它都是一些细节,如下传乘标记时也要修改加标记,下传加标记时和要乘上size什么的。代码:#include<cctype>#include<cstdio>#include<cstr...原创 2018-07-31 15:02:11 · 258 阅读 · 0 评论 -
BZOJ2959 长跑
LCT 并查集BZOJ题目传送门LCT维护双连通分量。如果没有1操作可以Tarjan+树剖水过,现在是动态的话就用LCT维护。当AAA和BBB不连通时直接连起来。当AAA和BBB已经连通时,把它们所在的双连通分量缩到一个点上。具体操作为先把AAA和BBB搞到同一个Splay里,然后遍历Splay,用并查集把所有点都缩到一个点上去并把权值赋给它。判断是否连通可以直接用LCT,然而...原创 2018-07-13 20:57:45 · 279 阅读 · 0 评论 -
洛谷P4172 [WC2006]水管局长(BZOJ2594)
LCT 最小生成树洛谷题目传送门 BZOJ题目传送门 改了好久。。。都跨月了 最后发现x&gt;y的时候没有swap然后排序就炸了。。。同这道题。 维护边权套路加一个点。 删边的话就把过程倒过来,从最终状态加边就好了。具体实现详见代码(记个id然后sort一下) 注意数据加强版要先在最终状态的那几条边跑MST,完成了就break,不能像那道题一样和加边一起算(别问我怎么知道的,1...原创 2018-04-07 10:47:34 · 264 阅读 · 0 评论 -
BZOJ2816: [ZJOI2012]网络(洛谷P2173)
LCTBZOJ题目传送门 洛谷题目传送门这。。。就是裸题啊既然c≤10c≤10c\leq10,那么我们建ccc颗LCT就好了。对于刚开始的边,按照边的颜色把两个节点link起来就好了。对于操作0:直接改就好了。。。 对于操作1:找到这条边在哪个LCT上,然后分情况讨论就好了,具体看代码。 对于操作2:直接查就好了。。。代码:#include&lt;cctype&g...原创 2018-03-22 20:04:46 · 261 阅读 · 0 评论 -
BZOJ4530: [Bjoi2014]大融合(洛谷P4219)
LCTBZOJ题目传送门 洛谷题目传送门显然答案为sz[x]∗sz[y]sz[x]∗sz[y]sz[x]*sz[y],但是因为这棵树会“动”,不能每次求一遍答案。设sz[x][0/1]sz[x][0/1]sz[x][0/1]表示x中虚边连接的/总的节点个数。那么有sz[x][1]=sz[x.l][1]+sz[x.r][1]+sz[x][0]+1sz[x][1]=sz[x.l][1]+...原创 2018-03-09 19:09:25 · 427 阅读 · 0 评论 -
BZOJ3669: [Noi2014]魔法森林(洛谷P2387)
LCT 最小生成树BZOJ题目传送门 洛谷题目传送门先对边按照a排个序,就像cdq分治那样除去其中一维的影响,而b用LCT动态维护最大值。当边的两端不连通时直接加边,否则找到两端路径上b的最大值,与当前边比较考虑是否加入并删除原来的边。但是LCT搞不了边权,可以把一条边变成一个点,然后并把边权赋给这个点(如x−>yx−>yx->y变成x−>z−>yx−&g...原创 2018-03-12 14:47:06 · 384 阅读 · 0 评论 -
BZOJ4817 [Sdoi2017]树点涂色(洛谷P3703)
LCT 线段树BZOJ题目传送门 洛谷题目传送门码力不行啊操作1就是access啦 操作2就是w[x]+w[y]−2∗w[lca(x,y)]+1w[x]+w[y]−2∗w[lca(x,y)]+1w[x]+w[y]-2*w[lca(x,y)]+1啦 操作3就是先DFS序然后线段树查一查区间最大值啦每个节点到根的颜色数为虚边数+1。(access后虚边即代表和上一个点的颜色不一样...原创 2018-03-07 21:13:34 · 362 阅读 · 0 评论 -
BZOJ2843: 极地旅行社
LCT题目传送门 继续划水打模板 代码:#include#include#include#include#define N 30005#define il inline#define iv il voidusing namespace std;struct node{ int fa,to[2],f,sz;}t[N];int a[N],n,m,stk[N],t原创 2018-01-10 20:07:29 · 287 阅读 · 0 评论 -
BZOJ2049: [Sdoi2008]Cave 洞穴勘测(洛谷P2147)
LCTBZOJ题目传送门 洛谷题目传送门简单的LCT应用。 每个询问其实就是询问他们的祖先是否相等。只需要access(x),splay(x),再不断往左走到最底就是x的祖先了。LCT不会?丑陋的代码:#include#include#include#include#define N 10005#define il inline#define iv il voi原创 2018-01-10 18:54:58 · 221 阅读 · 0 评论 -
BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(洛谷P3203)
LCTBZOJ题目传送门 洛谷题目传送门新增一个点n+1表示弹飞的点。 刚开始把i和i+ki接起来,查询时直接把x到n+1的路径拎出来,答案就是节点个数-1。改值时把x和x+ki断开,再把x和x+y接起来。注意对n+1取min。代码:#include#include#include#include#define N 200005#define il inline#d原创 2018-01-07 21:11:26 · 291 阅读 · 0 评论 -
BZOJ2752: [HAOI2012]高速公路(road)(洛谷P4412)
LCTBZOJ题目传送门洛谷题目传送门这道题的弱化版,用线段树维护就可以了。但我懒所以就直接双倍经验了。代码:#include<cctype>#include<cstdio>#include<cstring>#include<algorithm>#define N 100005#define F inline#define V ...原创 2018-09-28 21:30:48 · 231 阅读 · 0 评论