P5321 [BJOI2019]送别(LCT)
Foreword \text{Foreword} Foreword
肝了一下午+一晚上的码农题…
(主要就是在 debug,LCT 太难 de 了…)
感谢 @M_sea,在调无可调认为LCT会不会不可做时,我看到了他的题解,几乎一样的思路,给了我继续调下去的信心。
Solution \text{Solution} Solution
第一感就是割点 LCT 的感觉。(为什么都说这是平衡树板题啊…)
细化一下,把每个格点分成左上、右上、左下、右下四个点,每条边分成两边两个点,在可以直接走过的相邻点直接连边,那么整张图就会变成若干个环。
询问就是要求给出两点在环上钦定方向的距离。
对于修改,一个避免分讨的实现方法是把修改格边涉及到所有点之间的边 cut 掉,修改格边的存在状态后,再按照新的状态把对应的点 link 回去。
还有一个问题:LCT是无法维护环的,怎么办?
一个比较直观的想法是:随便选一条边 cut 掉(称为特殊边),这样就变成一条链了。询问的时候,“钦定的方向”要么是 split 出的实链的长度,要么是其补集,常规套路记录实链大小和虚子树大小即可。
但这样修改的时候会出问题:如果修改边使两个环合并为一个环,那么这个环上就会有两条特殊边,那么最终的 LCT 形态就会变得不连通了…
也有解决方法:在合并环之前把各自的特殊边 link 回去,合并完之后自然就只会出现一条新的特殊边(即合并失败的边)。
所以我们现在还需要记录一下每个环的特殊边是什么,通过 LCT 打标记即可维护。
于是本题就做完了。
(我调了一晚上的坑点:当特殊边被修改的格边状态涉及到时,不应该额外 link 特殊边,因为修改格边状态后可能这条边本身可能就已经不复存在了!)
Code \text{Code} Code
代码调调补补变得又长又丑,就放剪切板吧。
P5321 [BJOI2019]送别(LCT)相关推荐
- [BJOI2019]送别——非旋转treap
题目链接: [BJOI2019]送别 我们将每段墙的每一面看成一个点,将每个点与相邻的点(即按题中规则前进或后退一步能走到的点)连接.那么图中所有点就形成了若干个环,而添加一段墙或删除一段墙就是把两个 ...
- 【BJOI2019】送别(平衡树)(大力分类讨论)
传送门 首先,我不知道为什么有这么多人在喷出题人,我觉得这道题作为防AK题就只有"部分分过少",或者说"部分分写法过于繁杂"这一个问题吧,而且出题人也在知乎上面 ...
- 2019.03.01 bzoj2555: SubString(sam+lct)
传送门 题意简述: 要求在线支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 思路: 考虑用lctlctlct来动态维护samsa ...
- 洛谷.4234.最小差值生成树(LCT)
题目链接 先将边排序,这样就可以按从小到大的顺序维护生成树,枚举到一条未连通的边就连上,已连通则(用当前更大的)替换掉路径上最小的边,这样一定不会更差. 每次构成树时更新答案.答案就是当前边减去生成树 ...
- bzoj 4025 二分图——线段树分治+LCT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025 线段树分治,用 LCT 维护链的长度即可.不过很慢. 正常(更快)的方法应该是线段树分 ...
- BZOJ2631tree——LCT
题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...
- BZOJ 4817: [Sdoi2017]树点涂色(LCT+树剖+线段树)
题目描述 Bob有一棵 nn 个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. Bob ...
- 【BZOJ4817】【SDOI2017】树点涂色 [LCT][线段树]
树点涂色 Time Limit: 10 Sec Memory Limit: 128 MB [Submit][Status][Discuss] Description Bob有一棵n个点的有根树,其中 ...
- UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]
#274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...
最新文章
- 年薪70W架构师:全套英语学习资源泄露,手慢则无!(禁止外传)
- java 继承 注解_在java中实现组合注解原理分析(注解继承)
- 嵌入式linux设计报告,嵌入式linux课程设计报告
- webpack 打包第三方库_webpack打包分离第三方库和业务代码
- Selenium基础知识
- java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
- Java获取上一周、上一个月、上一年的时间
- 无需担心架构演变 入云的Teradata无处不在
- 设置屏幕分辨率的函数 - 回复 董勇 的问题
- 1001: [BeiJing2006]狼抓兔子(对偶图)
- Glide加载长图;WebView加载富文本(图片自适应屏幕大小)
- 数据挖掘——关联分析Apriori算法
- 账套恢复失败 文件服务器,用友T3恢复账套时提示:备份信息文件无效,恢复失败?...
- window安全中心关闭防火墙后仍然会将xx文件删除的解决办法
- iPad作为Windows电脑副屏使用技巧(详细向)
- tomcat 配置 数据库连接池
- 使用R语言筛选数据中的重复行
- arcgis10.2跨域解决方案
- vue select下拉框数据v-model绑定默认不显示的问题
- 《重构》第七章--读书笔记