LCT维护删除时间最晚生成树】的更多相关文章

用来做动态图问题. 维护一棵删除时间最晚的生成树,这样好处是加入一条非树边时可以直接判断加还是不加,没有现在不加入而之后再加入的情况.要是我比你先被删,那我就完全没必要加.否则你现在就可以被删除掉.…
题目:https://loj.ac/problem/121 离线,LCT维护删除时间最大生成树即可.注意没有被删的边的删除时间是 m+1 . 回收删掉的边的节点的话,空间就可以只开 n*2 了. #include<cstdio> #include<cstring> #include<algorithm> #include<map> #define mkp make_pair #define ls c[x][0] #define rs c[x][1] usin…
点此看题面 大致题意: 给你一个\(n*n\)的黑白棋盘,每次将一个格子翻转,分别求黑色连通块和白色连通块的个数. \(LCT\)动态维护图连通性 关于这一部分内容,可以参考这道例题:[BZOJ4025]二分图. 大致思路 我们可以将同种颜色的相邻格子之间连边,这样就可以把问题搬到图上. 然后考虑先离线,把每两个格子间边的加入与删除的时间(同一条边可能被加入和删除多次)记录下来. 这样就可以用\(LCT\)动态维护图连通性了. 但注意这道题比较恶心,需要你每次求出两种颜色的连通块个数. 我一开始…
有些题目,在要求支持link-cut之外,还会在线询问某个子树的信息.LCT可以通过维护虚边信息完成这个操作. 对于LCT上每个节点,维护两个两sz和si,后者维护该点所有虚儿子的信息,前者维护该点的所有信息和. 那么显然有:$si[x]=\sum sz[pson]$,$sz[x]=sz[lson]+sz[rson]+si[x]+v[x]$. 其中pson是虚儿子,lson,rson是LCT上的实儿子,v是节点本身的信息. 那么,考虑在哪些操作下需要更新这两个值. 1.access  每次将旧虚…
题目描述 给出一棵树和一个点对集合S,多次改变这棵树的形态.在集合中加入或删除点对,或询问集合内的每组点对之间的路径是否都经过某条给定边. 输入 输入的第一行包含一个整数 id,表示测试数据编号,如第一组数据的id=1,样例数据的 id 可以忽略.输入的第二行包含两个整数 n,m,分别表示图中的点数,以及接下来会发生的事件数,事件的定义下文中会有描述.初始时 S 为空.接下来 n−1 行,每行两个正整数 x,y,表示点 x 和点 y 之间有一条无向边.接下来 m 行,每行描述一个事件,每行的第一…
点此看题面 大致题意: 给你一个\(01\)串,每次询问前缀编号在一段区间内的两个前缀的最长公共后缀的长度. 离线存储询问 考虑将询问离线,按右端点大小用邻接表存下来(直接排序当然也可以啦). 这样的好处是什么呢? 我们就可以对于每一个枚举到的右端点来对答案进行更新,然后再处理对应询问. 则对于当前一个已确定的右端点\(r\),显然询问\([l,r]\)的答案就是两个编号均大于等于\(l\)的点的答案的最大值(注意无须考虑右边界),而这可以直接拿线段树或树状数组统计. 由此可以发现,这样一来最大…
\(\color{#0066ff}{ 题目描述 }\) Bob有一棵\(n\)个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. Bob可能会进行这几种操作: 1 x 把点\(x\)到根节点的路径上所有的点染上一种没有用过的新颜色. 2 x y 求\(x\)到\(y\)的路径的权值. 3 x 在以x为根的子树中选择一个点,使得这个点到根节点的路径权值最大,求最大权值. Bob一共会进行…
\(\color{#0066ff}{ 题目描述 }\) 在一个偏远的小镇上,有一些落后的山村.山村之间通过一些道路来连接.当然有的山村可能不连通. 一年当中会发生很多大事,比如说有人提议要在山村\(i\)与\(j\)之间修建一条道路,也有人觉得山村\(i\)和\(j\)之间的道路需要被拆掉. 由于小镇的落后,镇长不会允许存在两个山村\(i,j\),他们存在超过一条路径到达对方.也就是说,假如在修建山村\(i,j\)之间的道路之前,它们已经连通了,那么这条道路就不会被修建. 但拆除道路就不一样了.…
\(\color{#0066ff}{ 题目描述 }\) SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从 xx 处送往 yy 处,嘟嘟需要为供水公司找到一条从 AA 至 BB 的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,供水公司就可以开始送水了.嘟嘟一次只能处理一项送水任务,等到当前的送水任务完成了,才能处理下一项. 在处理每项送水任务之…
题目 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一条从A至B的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,供水公司就可以开始送水了.嘟嘟一次只能处理一项送水任务,等到当前的送水任务完成了,才能处理下一项. 在处理每项送水任务之前,路径上的水管都要进行一系列的准备操作,如清洗.消毒等等.嘟嘟在控制中心一声令下,…
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4736 题面: 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一位火焰之神 “我将赐予你们温暖和希望!” 只见他的身体中喷射出火焰之力 通过坚固的钢铁,传遍了千家万户 这时,只听见人们欢呼 “暖气来啦!” 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户)…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3510 题解 首先每一个连通块的首都根据定义,显然就是直径. 然后考虑直径的几个性质: 定义:删去这个点以后剩下的连通块最大的最小的点为重心. 一棵树最多只能有两个相邻的直径: 一棵树的重心到一棵树中所有点的距离和最小.(这个也是题目的条件转化为重心的原因) 两棵树的并的重心在两棵树各自的重心的连线上. 一棵树添加或者删除一个节点,树的重心最多只移动一条边的位置. 有了这些性质,我们可以发现,…
BZOJ4668 冷战(LCT维护最小生成树) 题面 自己找去 HINT 这道题就是动态加边,然后查询u,v两点最早什么时候联通,强制在线.思考一下,最早什么时候联通不就等同于维护最小生成树吗(把这条边加入的时间视为边权),然后就动态维护一下最小生成树,有个小细节,如果两点不连通,lastans要更新成0,被这个坑了 tips 出题人其实是想放带权并查集过的,所以数据范围是\(5e5\),如果把数据下载下来测是没法1s过大的点的,但是BZOJ是总时长,也就轻松AC了. #include<bits…
这也是一道LCT维护生成树的题. 那么我们还是按照套路,先对边进行排序,然后顺次加入. 不过和别的题有所不同的是: 在本题中,我们需要保证LCT中正好有\(n-1\)条边的时候,才能更新\(ans\) 其次,更新答案的时候,已知我们的边是最小的边,所以我们要考虑删除最大的边来考虑更新答案,而求最大边的过程,可以通过\(vis\)打标记,加一个指针随时维护来解决 最后一件事!!!!!! 一定记得判断自环!!!!!!!! for (int i=1;i<=m;i++) { int x=a[i].x,y…
在数据库里设置默认值current_timestamp可以维护创建时间,设置on update current_timestamp 可以维护更新时间.在JPA中应该如何去做呢?这里还是以上篇Topic为基础,给这个类添加这两个字段. @Entity @Table public class Topic implements Serializable{ private static final long serialVersionUID = -7752115605498533357L; @Id @G…
4764: 弹飞大爷 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 101  Solved: 52[Submit][Status][Discuss] Description 自从WC退役以来,大爷是越来越懒惰了.为了帮助他活动筋骨,也是受到了弹飞绵羊一题的启发,机房的小伙伴们 决定齐心合力构造一个下面这样的序列.这个序列共有N项,每项都代表了一个小伙伴的力量值,如果大爷落到了 第i个小伙伴的手里,那么第i个小伙伴会把大爷弹到第i+ai个小伙伴手里…
题面 没有权限号的可以去LOJ Sol 大家都知道,\(LCT\)上有许多实边和虚边 实边就是每棵\(Splay\)上的既认父亲又认儿子的边 虚边就是\(Splay\)和\(Splay\)之间只认父亲的的边 那么每个点就有它的虚儿子和实儿子,实际上虚儿子才是它在\(LCT\)维护的树上的真正的儿子 当你\(Access(x)\)时,\(x\)的虚儿子加上它自己就是它子树的信息 所以我们要维护每个点虚儿子的信息和LCT子树的信息(也就是虚儿子+实儿子+自己) 怎么维护? 你会发现这只会在\(Acc…
题目描述 小强要在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). 现在,你的任务就是随着边的添加,动态的回答小强对于某些边的负载的询问. 输入 第一行包含两个整数N,Q,表示星球的…
题目描述 小强要在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). 现在,你的任务就是随着边的添加,动态的回答小强对于某些边的负载的 询问. 输入 第一行包含两个整数N,Q,表示…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 LCT维护子树 siz .设 sm[ ] 表示轻儿子的 siz 和+1(1是自己的siz),siz[ ] 表示 splay 里 ( 两个儿子的 siz[ ] ) + sm[ cr ] .在 access 里随便维护一下就好了. 一开始写的 siz[ ]  是 splay 里右儿子的 siz[ ] + sm[ cr ] ,但打 rev[ ]  的时候难以维护,所以弃了. 注意要先让一个…
题目描述 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消失,而B国的国土也将归A国管辖.A国国王为了加强统治,会在A国和B国之间修建一条公路,即选择原A国的某个城市和B国某个城市,修建一条连接这两座城市的公路. 同样为了便于统治自己的国家,国家的首都会选在某个使得其他城市到它距离之和最小的城市,这里的距离是指需要经过公路的条数,如果有多个这样的城市,编号最小…
\(\color{#0066ff}{ 题目描述 }\) 给你一棵n个点的树,编号1~n.每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v满足路径u到v上所有节点(包括)都拥有相同的颜色 1 u:翻转u的颜色 \(\color{#0066ff}{输入格式}\) 一行一个整数n 接下来n-1行,每行两个整数表示一条边 接下来一行一个整数m表示操作次数 接下来m行,每行两个整数分别表示操作类型和被操作节点 \(\color{#0066ff…
\(\color{#0066ff}{ 题目描述 }\) 小强要在\(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…
\(\color{#0066ff}{ 题目描述 }\) 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,-,n,边标号为 1,2,3,-,m.初始时小 E 同学在 1 号节点,隐士则住在 n 号节点.小 E 需要通过这一片魔法森林,才能够拜访到隐士. 魔法森林中居住了一些妖怪.每当有人经过一条边的时候,这条边上的妖怪 就会对其发起攻击.幸运的是,在 1 号节点住着两种守护精灵:A 型守护精…
[BZOJ3510]首都 Description 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消失,而B国的国土也将归A国管辖.A国国王为了加强统治,会在A国和B国之间修建一条公路,即选择原A国的某个城市和B国某个城市,修建一条连接这两座城市的公路. 同样为了便于统治自己的国家,国家的首都会选在某个使得其他城市到它距离之和最小的城市,这里的距离是指需要经过公…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 用LCT维护子树 size,就是实边和虚边分开维护: 看博客:https://blog.csdn.net/neither_nor/article/details/52979425 代码如下: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef…
点此看题面 大致题意: 有一棵初始边权全为\(1\)的树,四种操作:将两点间路径边权都加上一个数,删一条边.加一条新边,将两点间路径边权都加上一个数,询问两点间路径权值和. 序列版 这道题有一个序列版:[洛谷3373][模板]线段树 2. 看题目就知道是一道线段树板子题. 这种题目移到树上路径中,且要删边加边,是\(LCT\)无疑了. \(LCT\)维护懒惰标记 可以说,这道题就是上面那题的翻版. 同样维护两个标记:乘法标记和加法标记,加上原有的翻转标记,共三个标记. 具体细节其实可以详见上面提…
点此看题面 大致题意: 给你一棵树,\(3\)种操作:连一条边,删一条边,询问两点是否联通. \(LCT\)维护连通性 有一道类似的题目:[BZOJ2049][SDOI2008] Cave 洞穴勘测. 这两道题都是\(LCT\)动态维护连通性的模板题. 考虑将\(x\)和\(y\)连边时,我们就在\(LCT\)上\(Link(x,y)\). 同理,\(x\)和\(y\)断边时,就\(Cut(x,y)\). 询问连通性时,只要判断\(FindRoot(x)\)与\(FindRoot(y)\)是否相…
点此看题面 大致题意: 有\(n\)个洞穴,\(3\)种操作:连一条边,删一条边,询问两点是否联通. \(LCT\)维护连通性 这道题应该是\(LCT\)动态维护连通性的一道模板题. 考虑将\(x\)和\(y\)连边时,我们就在\(LCT\)上\(Link(x,y)\). 同理,\(x\)和\(y\)断边时,就\(Cut(x,y)\). 询问连通性时,只要判断\(FindRoot(x)\)与\(FindRoot(y)\)是否相等即可. 代码 #include<bits/stdc++.h> #d…
题意: (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 字符串长度<=6e5,询问总长度<=3e6 分析: 考虑建个sam,然后把slink连起来就形成了一个前缀树 对于每个询问的串,就是求出它在sam里对应的点,然后在slink树种该点子树的size就是答案 用lct维护slink树即可 #include<bits/stdc++.h> using namespace std; ; const int maxs=3e6; s…