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)相关推荐

  1. [BJOI2019]送别——非旋转treap

    题目链接: [BJOI2019]送别 我们将每段墙的每一面看成一个点,将每个点与相邻的点(即按题中规则前进或后退一步能走到的点)连接.那么图中所有点就形成了若干个环,而添加一段墙或删除一段墙就是把两个 ...

  2. 【BJOI2019】送别(平衡树)(大力分类讨论)

    传送门 首先,我不知道为什么有这么多人在喷出题人,我觉得这道题作为防AK题就只有"部分分过少",或者说"部分分写法过于繁杂"这一个问题吧,而且出题人也在知乎上面 ...

  3. 2019.03.01 bzoj2555: SubString(sam+lct)

    传送门 题意简述: 要求在线支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 思路: 考虑用lctlctlct来动态维护samsa ...

  4. 洛谷.4234.最小差值生成树(LCT)

    题目链接 先将边排序,这样就可以按从小到大的顺序维护生成树,枚举到一条未连通的边就连上,已连通则(用当前更大的)替换掉路径上最小的边,这样一定不会更差. 每次构成树时更新答案.答案就是当前边减去生成树 ...

  5. bzoj 4025 二分图——线段树分治+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025 线段树分治,用 LCT 维护链的长度即可.不过很慢. 正常(更快)的方法应该是线段树分 ...

  6. BZOJ2631tree——LCT

    题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...

  7. BZOJ 4817: [Sdoi2017]树点涂色(LCT+树剖+线段树)

    题目描述 Bob有一棵 nn 个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. Bob ...

  8. 【BZOJ4817】【SDOI2017】树点涂色 [LCT][线段树]

    树点涂色 Time Limit: 10 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description Bob有一棵n个点的有根树,其中 ...

  9. UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]

    #274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...

最新文章

  1. 年薪70W架构师:全套英语学习资源泄露,手慢则无!(禁止外传)
  2. java 继承 注解_在java中实现组合注解原理分析(注解继承)
  3. 嵌入式linux设计报告,嵌入式linux课程设计报告
  4. webpack 打包第三方库_webpack打包分离第三方库和业务代码
  5. Selenium基础知识
  6. java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
  7. Java获取上一周、上一个月、上一年的时间
  8. 无需担心架构演变 入云的Teradata无处不在
  9. 设置屏幕分辨率的函数 - 回复 董勇 的问题
  10. 1001: [BeiJing2006]狼抓兔子(对偶图)
  11. Glide加载长图;WebView加载富文本(图片自适应屏幕大小)
  12. 数据挖掘——关联分析Apriori算法
  13. 账套恢复失败 文件服务器,用友T3恢复账套时提示:备份信息文件无效,恢复失败?...
  14. window安全中心关闭防火墙后仍然会将xx文件删除的解决办法
  15. iPad作为Windows电脑副屏使用技巧(详细向)
  16. tomcat 配置 数据库连接池
  17. 使用R语言筛选数据中的重复行
  18. arcgis10.2跨域解决方案
  19. vue select下拉框数据v-model绑定默认不显示的问题
  20. 《重构》第七章--读书笔记

热门文章

  1. Linux文本界面字体颜色修改
  2. 浅析Windows命名管道Named Pipe
  3. DropDownList 控件不能触发SelectedIndexChanged 事件
  4. 事件相机与传统相机、高速相机、激光雷达等比较
  5. 北京,I'm coming
  6. C/C++基于easyX库实现三星环绕小项目(C/C++)
  7. 小程序webview不铺满_感恩宠粉季小程序优惠多多,一元秒杀不容错过!
  8. 如何下载腾讯课堂的视频?
  9. 基于Java和IntelliJ IDEA的人事管理系统
  10. 吐槽一下 XCode 开发工具,可以吗?