刚开始学lct花了一晚上研究模板,调出来就感觉不怎么难打了。

对板子的浅显理解:

  lct维护树形联通块,通过splay维护实链,可以把需要的路径变换到一颗splay上维护。

  splay中的关系只依赖实边,一个点最多与两个实边相连,可以有不止两个儿子。也就是说,每个点的贡献由实边传递,必要时重分虚实来合并指定贡献。

   rotate 和 splay 只操作splay树。splay以深度为关键字排序。

   access 和 split 重新划分原树虚实,以重新划分splay的集合。

   makeroot 重新选原树的根,会改变原树父子关系。

   link 和 cut 对原树修改。

  每次splay节点父子关系变化/访问时,需要 download 或 updata 。

  lct的用法大概是对一条指定两端的路径进行求和、取min/max以及相应修改,并支持动态改边。把需要的路径split就可以直接访问根节点splay了。对于修改,为了避免从下往上的更新,先把节点splay到顶(splay中的根)再直接修改。

几点技巧:

  边权变点权:在两端点之间添一个点,其余点不参与贡献。样子和圆方树有点像。

  森林联通数:点数-变数。

几道题:

水管局长数据加强版:

  之前模拟赛好像做过类似的题。有一道题用并查集链并,还有一道是线段树分治,具体记不清了。

  这题的意思是寻找一条路径,使得路径上最大的边权最小化,其实是最小生成树。但有动态删边。LCT维护动态加边最小生成树比较容易,查询路径最大值就可以,但是有了删边,最大值难以维护。于是考虑离线,反过来加边就可以了。

GERALD07加强版:

  一开始有个鬼畜的想法:分块,小块中连$\sqrt N$条边,小块之间全连起来,每次把区间两端的小块切断,在连剩下的边。复杂度够呛,空间也开不下。。。

  这题关键在于联通块的计数。先考虑只有树形联通块:点数-变数就是了。如果是图的话,就意味着有些边在一个联通块内是多余的。考虑按序号逐个加边,当一条边的两点已经联通时,记录那条路上标号最小的边t,表示:如果t及之后的边和这条边一起出现,那么这条边就多余了。那么一段区间[l,r]的边的有效边就是t值小于l的边。用主席树维护。

魔法森林:

  相当于有两维限制的最小生成树,要求边上两元素最大值之和最小化。这类两维限制的题,可以考虑枚举一维,最优另一维。假设最终答案为(a,b),就是说,用A值不大于a的边和b值不大于b的边凑出的答案。我们按A从小到大枚举边,在把B那一维最优化,这样就是一维的最小生成树了。

在美妙的数学王国中畅游:

  首先动态改边不得不用LCT维护,那么考虑路径贡献总和的维护。对于点上的函数,如果是多项式的话我们就可以把多点的系数加和,最终带入就是贡献总和。那么就要把$sin(ax+b)$和$e^{ax+b}$拟成多项式了,泰勒展开。

  这题大概要展到20阶,少了WA0,多了TLE。一开始对一次函数的系数没有清空以为精度问题卡了半天。

情报传递:

  虽然并没有找到LCT的做法。

  每个情报员打上相应时间戳,查询操作即为求路径上小于$i-C_i$的点数,就是树上主席树。

  然后有一个naive的想法是用LCT的splay直接查pre,但是这里splay以深度为键值,十分cs。

LCT 总结的更多相关文章

  1. 一堆LCT板子

    搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...

  2. 动态树之LCT(link-cut tree)讲解

    动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作.其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT( ...

  3. 在此为LCT开一个永久的坑

    其实我连splay都还不怎么会. 今天先抄了黄学长的bzoj2049,以后一定要把它理解了. 写LCT怎么能不%数据结构大神yeweining呢?%%%chrysanthemums  %%%切掉大森林 ...

  4. 【BZOJ2157】旅游 LCT

    模板T,SB的DMoon..其实样例也是中国好样例...一开始不会复制,yangyang:找到“sample input”按住shift,按page down.... #include <ios ...

  5. 【BZOJ3669】[Noi2014]魔法森林 LCT

    终于不是裸的LCT了...然而一开始一眼看上去这是kruskal..不对,题目要求1->n的路径上的每个点的两个最大权值和最小,这样便可以用LCT来维护一个最小生成路(瞎编的...),先以a为关 ...

  6. 【BZOJ1180】: [CROATIAN2009]OTOCI & 2843: 极地旅行社 LCT

    竟然卡了我....忘记在push_down先下传父亲的信息了....还有splay里for():卡了我10min,但是双倍经验还是挺爽的,什么都不用改. 感觉做的全是模板题,太水啦,不能这么水了... ...

  7. 【BZOJ3282】Tree LCT

    1A爽,感觉又对指针重怀信心了呢= =,模板题,注意单点修改时splay就好,其实按吾本意是没写的也A了,不过应该加上能更好维护平衡性. ..还是得加上好= = #include <iostre ...

  8. BZOJ2888 资源运输(LCT启发式合并)

    这道题目太神啦! 我们考虑他的每一次合并操作,为了维护两棵树合并后树的重心,我们只好一个一个的把节点加进去.那么这样一来看上去似乎就是一次操作O(nlogn),但是我们拥有数据结构的合并利器--启发式 ...

  9. LCT裸题泛做

    ①洞穴勘测 bzoj2049 题意:由若干个操作,每次加入/删除两点间的一条边,询问某两点是否连通.保证任意时刻图都是一个森林.(两点之间至多只有一条路径) 这就是个link+cut+find roo ...

  10. 链剖&LCT总结

    在搞LCT之前,我们不妨再看看喜闻乐见的树链剖分. 树链剖分有一道喜闻乐见的例题:NOI2015 软件包管理器 如果你看懂题目了,你就会明白它是叫你维护一个树,这棵树是不会动的,要兹磁子树求和,子树修 ...

随机推荐

  1. 聊聊 ES6 中的箭头函数

    首先来两点: 当只有一个参数的时候,那么 () 可以省略 当只有一个 return 的时候,那么 {} 可以省略 当函数体内只有一条语句的时候,那么 {} 也可以省略 下面来几个简单的例子来对比 ES ...

  2. js 字节操作

    获取byte的高4位bit和低4位bit function getHeight4(ata){//获取高四位 int height; height = ((data & 0xf0) >&g ...

  3. vue_插槽的理解和使用

    对于插槽的概念和使用,这是vue的一个难点,这需要我们静下心来,慢慢研究.以下是我这两天通过官网和其他资料的学习和使用总结出来的笔记,如有错误或者有不同见解的,欢迎留言,一起学习. 什么是插槽? 插槽 ...

  4. three.js展示三维模型

    1.概要 最近学习Three.js,尝试加载一些3d max导出的obj.stl模型,在展示模型的时候遇到了一些问题,模型的尺寸.位置和旋转角度每次都靠手工调整,非常的不方便,就想着写一个方法来随心所 ...

  5. angularcli 第四篇(执行事件)

    目录: 1.按下按钮执行事件 2.按下键盘回车“Enter”执行事件 1.按下按钮执行事件:<button  (click) = 'setName()'>......</button ...

  6. Type mismatch: cannot convert from element type Object to String 解决办法

    首先放上我的源码,看看你的代码是不是我这个类似的. @Test void predicateTest() throws Exception { List<String> languages ...

  7. 微博MySQL优化之路

    数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问题之后的恢复时间一般不太 ...

  8. Mysql存储引擎中InnoDB与Myisam的区别

    1. 事务处理innodb 支持事务功能,myisam 不支持.Myisam 的执行速度更快,性能更好. 2. select ,update ,insert ,delete 操作MyISAM:如果执行 ...

  9. 防止js全局变量污染方法总结-待续

    javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题 ...

  10. css 为什么给span加vertical-align: middle不起作用?

    vertical-align是什么意思?先举个例子! 这句html元素中的文本为什么不能垂直居中. <style> span{ height:60px;vertical-align: mi ...