[学习笔记]Dsu On Tree
[dsu on tree]【学习笔记】 - Candy? - 博客园
题单:
也称:树上启发式合并
可以解决绝大部分不带修改的离线询问的子树查询问题
流程:
1.重链剖分找重儿子
2.sol:全局用桶或者数据结构存信息。
①递归所有的轻儿子,回溯前删除贡献
②递归重儿子,不删除贡献
③暴力找所有轻儿子,加入贡献
④更新x的答案
⑤如果x是父亲的轻儿子,再把整个子树贡献删除(信息只有子树的,有时可以不用再dfs去重,可以直接清空)
正确性:
一个点的轻儿子会暴力更新到所有信息,重儿子链不会删除贡献,所以重儿子子树经过④之后轻儿子的贡献会保留下来,重儿子子树都有。
数据结构只会保留x子树的。
复杂度:
主要是④的暴力和⑤的删除。一个点到根的路径一共只有logn条轻边
每个轻边会额外删除一次、插入一次。总共是:O(nlogn)的
利用重链剖分的性质,保留重儿子的信息,轻儿子暴力更新
O(n^2)->O(nlogn)
好处:
(其实许多dsu的题都可以用主席树,线段树合并处理。)
1.好写
2.空间小。O(n)。全局的桶使得不用再花费logn的空间
3.可以精确打击。枚举轻儿子是把所有点再找一遍直接贡献到x上去。线段树合并和主席树就不太能精确查找。好比莫队。
4.可以处理一些有根树点分治
例题:
为了重儿子的信息一直适用,都是记录的绝对大小,也就是深度。
单纯和深度相关,并且边权为1的话,也可以考虑长链剖分
(这个题,可以用桶前后差分做到O(n),长链剖分也可以O(n)的)
二进制数记录某个深度的所有字符出现次数奇偶性
倍增找到k级祖先,记录某个深度的点出现次数
每个深度用set去重。
CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
有根树点分治:
CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
挺不错的算法
有点类似分块莫队三元环计数。用顺序和规模限制了复杂度。且这个还是一个logn
[学习笔记]Dsu On Tree的更多相关文章
- [学习笔记]dsu on a tree(如何远离线段树合并)
https://www.zybuluo.com/ysner/note/1318613 背景 这玩意来源于一种有局限性的算法. 有一种广为人知的,树上离线维护子树信息的做法. (可以参照luogu360 ...
- 决策树学习笔记(Decision Tree)
什么是决策树? 决策树是一种基本的分类与回归方法.其主要有点事模型具有可得性,分类速度快.学习时,利用训练数据,根据损失函数最小化原则建立决策树模型:预测时,对新数据,利用决策树模型进行分类. 决策树 ...
- [学习笔记] Uplift Decision Tree With KL Divergence
Uplift Decision Tree With KL Divergence Intro Uplift model 我没找到一个合适的翻译,这方法主要应用是,探究用户在给予一定激励之后的表现,也就是 ...
- 【学习笔记】K-D tree 区域查询时间复杂度简易证明
查询算法的流程 如果查询与当前结点的区域无交集,直接跳出. 如果查询将当前结点的区域包含,直接跳出并上传答案. 有交集但不包含,继续递归求解. K-D Tree 如何划分区域 可以借助下文图片理解. ...
- dsu on tree 树上启发式合并 学习笔记
近几天跟着dreagonm大佬学习了\(dsu\ on\ tree\),来总结一下: \(dsu\ on\ tree\),也就是树上启发式合并,是用来处理一类离线的树上询问问题(比如子树内的颜色种数) ...
- 树上启发式合并(dsu on tree)学习笔记
有丶难,学到自闭 参考的文章: zcysky:[学习笔记]dsu on tree Arpa:[Tutorial] Sack (dsu on tree) 先康一康模板题吧:CF 600E($Lomsat ...
- dsu on tree学习笔记
前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...
- [dsu on tree]【学习笔记】
十几天前看到zyf2000发过关于这个的题目的Blog, 今天终于去学习了一下 Codeforces原文链接 dsu on tree 简介 我也不清楚dsu是什么的英文缩写... 就像是树上的启发式合 ...
- dsu on tree 学习笔记
这是一个黑科技,考虑树链剖分后,每个点只会在轻重链之间转化\(log\)次. 考虑暴力是怎么写的,每次枚举一个点,再暴力把子树全部扫一边. \(dsu\ on\ tree.\)的思想就是保留重儿子不清 ...
随机推荐
- LDAP-openldap服务部署和测试(YUM安装)
1. 概述2. 服务端部署过程2.1 软件包说明2.2 部署过程2.3 配置过程3. 测试4. 生成LDIF格式文件4.1 安装migrationtools工具4.2 用migrationtools生 ...
- Centos下SVN环境部署记录
大多数情况下,我们日常工作中用的版本控制系统都会选择分布式的Git,它相比于集中式的SVN有很多优势.但是有些项目软件基于自身限制,可能只支持SVN做工程同步.废话就不多说了,下面记录下SVN的部署和 ...
- 状态模式-State-订单状态
JAVA设计模式-状态模式-State-订单状态 21. State(状态) 意图: 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 解释: 比如说对订单的提交,第一 ...
- Buy the Ticket HDU 1133
传送门 [http://acm.hdu.edu.cn/showproblem.php?pid=1133] 题目描述和分析 代码 #include<iostream> #include< ...
- DWR实现服务器向客户端推送消息
原文链接 http://www.blogjava.net/stevenjohn/archive/2012/07/07/382447.html这片文章还是给了我很大帮助,再次表示感谢,下面我将这两天的研 ...
- 使用Eclipse可以方便的统计工程或文件的代码行数,
使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expressi ...
- Notepad++和Sublime单词首字符大小写转化问题
- node之jade和ejs的使用方法 jade篇
let express = require('express'); let consolidate = require('consolidate'); let app = express(); // ...
- [微软官网]windows server 内存限制
Memory Limits for Windows and Windows Server Releases https://docs.microsoft.com/zh-cn/windows/deskt ...
- [读书笔记]SQLSERVER企业级平台管理实践读书笔记01
1. SQLSERVER信息收集 SQLDIAG 使用界面 C:\Users\Administrator>sqldiag2018/01/02 08:13:26.10 SQLDIAG Collec ...