随笔分类 -  数据结构—LCT

摘要:LCT神题... 首先暴力的做法就是每次在一个区间上link,然后暴力查询,时间复杂度O() 但是我们可以发现的是,每棵树之间互不影响! 因此我们可以考虑离线之后分别统计每棵树 但是这样做其实并没有优化时空啊! 但是等等,我们在考虑一下:我们的操作都是区间操作,也就是说我们可以用一个类似差分 阅读全文
posted @ 2019-07-12 10:54 lleozhang 阅读(302) 评论(0) 推荐(0) 编辑
摘要:思想基本同bzoj 2594,但是多了一步 首先我们发现这时的边有两个属性了,因此我们考虑先去掉其中一者的限制 我们把所有边按a大小排序,然后从小到大加入维护的最小生成树 每次加边时都按照b的大小操作bzoj 2594,然后更新答案即可 如果始终不联通输出-1 阅读全文
posted @ 2019-07-10 16:15 lleozhang 阅读(223) 评论(0) 推荐(0) 编辑
摘要:很好的一道LCT题目 首先我们可以发现,题目要求的就是最小生成树上的一条树链的最长边的长度,因此我们实际只需动态维护最小生成树即可 然后我们考虑怎么动态维护最小生成树 不难发现,如果涉及在最小生成树上删边,那么这个操作将变得非常复杂,因为我们并不知道删边之后要把什么样的边补充回去才行 但是,如果我们 阅读全文
posted @ 2019-07-10 16:12 lleozhang 阅读(166) 评论(0) 推荐(0) 编辑
摘要:LCT好题 首先我们考虑实际询问的是什么: 从LCT的角度考虑,如果我们认为一开始树上每一条边都是虚边,把一次涂色看作一次access操作,那么询问的实际就是两个节点间的虚边数量+1和子树中的最大虚边数量! 这种问题显然树上容斥,如果设disi表示i到根节点需要经过多少虚边,那么答案显 阅读全文
posted @ 2019-07-10 12:43 lleozhang 阅读(178) 评论(0) 推荐(0) 编辑
摘要:LCT板子题... 看到题目中的操作很显然是从ii+ki连一条边,每次修改就是删除原来的边再加入一条新的边嘛 然后考虑查询:对于被弹飞的部分,我们统一新建一个节点n+1,把所有越过边界的部分指向这个节点即可 然后在查询的时候只需要拎出查询节点到n+1节点的树链,统计其大小即可 阅读全文
posted @ 2019-07-10 10:55 lleozhang 阅读(199) 评论(0) 推荐(0) 编辑
摘要:这应该暂时是个终结篇了... 最后在这里讨论LCT的一个常用操作:维护虚子树信息 这也是一个常用操作 下面我们看一下如何来维护 以下内容转自https://blog.csdn.net/neither_nor/article/details/52979425 对于一个点x,如果我们对x进行access 阅读全文
posted @ 2018-09-18 18:47 lleozhang 阅读(144) 评论(0) 推荐(0) 编辑
摘要:这一篇重点探讨LCT的应用 例:bzoj 2631 tree2(国家集训队) LCT模板操作之一,利用SPLAY可以进行区间操作这一性质对维护懒惰标记,注意标记下传顺序和如何下传 例:bzoj 3282 luogu 3690 link-cut-tree 模板 模板题,用SPLAY维护即可 注意判断加 阅读全文
posted @ 2018-09-18 18:20 lleozhang 阅读(193) 评论(0) 推荐(0) 编辑
摘要:前三篇好像变成了SPLAY专题... 这一篇正式开始LCT! 其实LCT就是基于SPLAY的伸展操作维护树(森林)连通性的一个数据结构 核心操作有很多,我们以一道题为例: 例:bzoj 2049 洞穴勘测 要求:加边和删边,询问连通性 其实如果没有删边,裸跑并查集似乎就可以搞定 但由于存在删边,并查 阅读全文
posted @ 2018-09-18 18:05 lleozhang 阅读(171) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示