zoukankan      html  css  js  c++  java
  • $Dsu$ $on$ $Tree$ 复习

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

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

    大致认识

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

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

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

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

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

    题目

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

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

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


    就这样啦。

  • 相关阅读:
    ios 应用剖析
    nyist 737 相邻石子合并问题
    砝码称重 2
    HDU4614【线段树。】
    Spark安装
    广度优先搜索
    MongoDB 操作手冊CRUD 更新 update
    HiWorkV1.3版震撼公布,今日起正式公开測试!
    织梦调用父级栏目链接和名称
    使用Blender批量导出/转换模型
  • 原文地址:https://www.cnblogs.com/Lovemona/p/9839109.html
Copyright © 2011-2022 走看看