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

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

大致认识

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

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

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

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

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

题目

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

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

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

就这样啦。

随机推荐

  1. 无法启用web调试服务器

    场景:vs2005   webservice 项目属性中:web : 使用IIS web  服务器  http://localhost/WSMA   --- >自动创建虚拟目录 点击调试的时候F ...

  2. Android9.0特性

    这篇文章,是Android官方文档的中文版本. 注意事项(AndroidP 特性): (1),android.os.Build.VERSION.RELEASE ,需要当做字符串类型处理. (2),依赖 ...

  3. php range()函数 语法

    php range()函数 语法 作用:创建一个包含指定范围的元素的数组.dd马达哪家好 语法:range(low,high,step) 参数: 参数 描述 low  必需.规定数组的最低值. hig ...

  4. swan.after

    解释: swan.after可以拦截所有当前运行小程序对于API的调用,默认传入function时,只在API函数调用的返回阶段拦截.如果传入Object,则可以选择拦截的阶段(例如: 返回阶段.回调 ...

  5. dos编辑文件上传到unix系统多余^M删除方法

    linux上的文件sz到window编辑后多出^M, 方法一: 1.grep -anR '^M' filename |wc -l2.crontab -e 或vim filename3.:set ff  ...

  6. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

  7. springboot版本依赖

    springboot2.x及以后依赖于jdk1.8及以上. 如图:

  8. 如何在微信小程序中使用iconfont

    开篇废话 开发过小程序的童鞋肯定都会遇到这样的问题,当我们在小程序中使用iconfont官方推荐的方法插入字体时,我们总会得到一个打印机(滑稽).那么如何在小程序中正确的使用iconfont呢? 一. ...

  9. 简单了解winform

    WinForm是·Net开发平台中对Windows Form的一种称谓. Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的窗体应用程序.可以访问数据库中的数据,并在窗体上显 ...

  10. Vagrant 手册之 Vagrantfile - SSH 设置 config.ssh

    原文地址 配置的命名空间:config.ssh config.ssh 中的设置与配置 Vagrant 如何通过 SSH 访问您的计算机相关. 大多数 Vagrant 设置一样,一般使用默认设置即可,但 ...