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

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

大致认识

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

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

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

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

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

题目

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

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

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

就这样啦。

随机推荐

  1. CSS中浮动属性float及清除浮动

    1.float属性 CSS 的 Float(浮动),会使元素向左或向右移动,由于浮动的元素会脱离文档流,所以它后面的元素会重新排列. 浮动元素之后的那些元素将会围绕它,而浮动元素之前的元素将不会受到影 ...

  2. Python_013(面向对象概念)

    一.面向对象 1.面向对象几个概念问题: a:类:具有相同属性和技能的一类事物.用代码表示就是,我类里面有一些静态变量和方法是大家共有的; b:对象:具体的类的表现.在代码中就是,调用类的方法或变量传 ...

  3. 170814关于Cookie的知识点

    1.会话控制 Http协议   Http协议两个缺陷: 1.HTTP协议是纯文本的    2.HTTP协议是无状态的 服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户    虽然通过H ...

  4. oracle sql查询表外键关系

    SELECT F.TABLE_NAME, F.CONSTRAINT_NAME, F.COLUMN_NAME, F.POSITION, P.TABLE_NAME, P.COLUMN_NAME, P.PO ...

  5. Spring Boot 获取 java resources 下文件

    Spring Boot 获取 java resources 下文件 Spring Boot 获取 resources 目录下的目录(例:获取 resources 目录下的 template 目录): ...

  6. JS-立即执行函数表达式(IIFE)

    javascript 函数调用 在 javascript 中,每一个函数在被调用的时候都会创建一个执行上下文,在该函数内部定义的变量和函数只能在该函数内部被使用,而正是因为这个上下文,使得我们在调用函 ...

  7. jQuery基础--jQuery特殊属性操作

    1.index() 会返回当前元素在所有兄弟元素里面的索引. <!DOCTYPE html> <html lang="zh-CN"> <head> ...

  8. ‘’‘安装PyMouse,个人日志'''

    管理员启动CMD 1.直接pip install pymouse,成功安装, 2.安装PyHook: https://www.lfd.uci.edu/~gohlke/pythonlibs/ (向下滑动 ...

  9. beeline链接hive报错

    看问题:beeline连接hiveserver2报错.连接串:hive  --service beeline -u jdbc:hive2://localhost:10000/hive 错误:Error ...

  10. JVM(11)之 G1收集器

    开发十年,就只剩下这套架构体系了! >>>   在前两篇博文中讲解了新生代和年老代的收集器,在本篇博文中介绍一个收集范围涵盖整个堆的收集器--G1收集器.  先讲讲G1收集器的特点, ...