\(Dsu\) \(on\) \(Tree\) 复习

发现最近有点头晕,突然这东西就不会了,头疼了很久,决定写一份记录啊。

大致认识

适用范围一般在处理树上子树统计问题,不支持在线回答询问以及修改。

最裸的复杂度是\(nlogn\),它优秀的复杂度基于树链剖分,所以学习这东西之前首先得掌握树链剖分的相关知识。

主要的算法思想为优化大暴力,即对于每个点都向下\(Dfs\),考虑如何优化,可以发现一个点被重复统计了多次,并且,每次\(Dfs\)的结果都直接删除了而没有能被很好地利用。

在对一棵树进行树链剖分之后,利用重链剖分优秀的性质对上面的暴力进行优化,我们考虑每个点继承自己重儿子的答案,而在轻重链转换的时候暴力转移,如果对于一个元素的一次转移是\(O(1)\)的,那么这个算法就可以达到\(nlogn\)的优秀复杂度。

具体证明按照树链剖分的那一套,一个点向上跳重链,只会经过最多\(logn\)次轻重链的转换,这样以来,每个元素被统计的次数就是\(O(logn)\)的,而若一次统计的复杂度是\(O(1)\),则整个算法的复杂度就可以达到上文所说的那个优秀复杂度。

题目

感觉差不多就这样就结束了啊。

摆俩题吧,其实也是别人博客推荐的,可以自己去搜搜,第一个那个博客挺好的。

两个模板题 \(CF600E\) \(CF741D\) 。

就这样啦。

随机推荐

  1. jsc2019_qualD Classified

    题目大意 给你一个有n个点的完全图 求一种方案是的给边染色后任何一点不能沿一种颜色的边走奇数条边回到这个点 要求颜色数最少 分析 考场上输出格式打错见祖宗... 我们每次找一个最大二分图将其染一个新颜 ...

  2. HTTP 协议解析

    目录 目录 HTTP 协议 HTTP 协议工作原理 HTTP Request 请求行 Request Header HTTP Response 状态行 Response Header Body HTT ...

  3. for的循环题

    package Tony2;import java.util.Scanner; public class Day27 { public static void main(String[] args) ...

  4. EL表达式(二)运算符

    运算符"."和"[]": "."能做的"[]"也能做,"[]"能做的"."不一定 ...

  5. 关于VMWare的几种网络模式

    具体的可以参考这个博文:http://zhenyaliu.blog.163.com/blog/static/2377571920103775447527/

  6. 单击EasyUI的datagrid行时不选中

    单击EasyUI的datagrid行时不选中,行背景色不变,点击选择框checkbox时选中该行 核心代码: $("#msgList").datagrid({        url ...

  7. 06:(h5*)Vue第六天

    目录 1:iView 2:  element 3:  vuex 正文 1:i-view 1:装包 npm install view-design --save 2:导包 import ViewUI f ...

  8. php和java的优势

    现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.下面我们就为大家 ...

  9. flask项目中使用富文本编辑器

    flask是一个用python编写的轻量级web框架,基于Werkzeug WSGI(WSGI: python的服务器网关接口)工具箱和Jinja2模板,因为它使用简单的核心,用extension增加 ...

  10. hdu 4453 约会安排(线段树区间合并)

    约会安排 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...