花了挺长的时间学了LCT,还不是很熟练,还要继续写一些题来熟练。
给初学者的建议:
1、首先先学会链剖和splay,并能掌握它们的原理,熟练写模板。
2、了解LCT和链剖定义的不同,明确Access/Reverse操作各自的作用和原理。
3、在理解操作的原理之后,研究Link/Cut/Find操作如何将它们结合起来。
推荐一个ppt:PoPoQQQ的LCT讲解,挺清楚的,主要是原树和辅助树的关系讲的比较好,但是我不想学指针233
下面稍微摘录一点(From PoPoQQQ)
『LCT能干嘛』
(1)维护一个序列,支持下列操作:
区间求和
区间求最值
区间修改
求连续子段和
这个线段树就可以解决 具体做法不加累述了
(2)维护一个序列,支持下列操作:
区间求和
区间求最值
区间修改
求连续子段和
添加一段区间
删除一段区间
翻转一段区间
对Splay初学者来说几乎是噩梦级别的题目
其实不难(笑
Splay模板题(真心
(3)维护一棵树,支持下列操作:
链上求和
链上求最值
链上修改
子树修改
子树求和
换根
树链剖分!!!
(4)维护一棵树,支持下列操作: