社区
东北大学
知识分享
帖子详情
树上启发式合并(dsu on tree)
DogDu
2024-01-22 18:53:44
树上启发式合并(dsu on tree)-CSDN博客
...全文
533
回复
打赏
收藏
树上启发式合并(dsu on tree)
树上启发式合并(dsu on tree)-CSDN博客
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
树上
启发式
合并
(
DSU
-on-
Tree
)
树上
启发式
合并
,用来解决子树查询问题,是一种离线的、“暴力的”算法。从某种角度而言,与莫队算法有些类似,即:按照我们指定的顺序对数据做一个遍历,在遍历过程中记录询问的答案。CF上有一个专门的blog,讲了很多,本文只涉及到有关轻重链剖分的部分。oi-wiki上有一个更短的文章。递归统计子节点的数据先统计轻儿子(统计完的数据即刻清空)最后统计重儿子(统计完的数据保留下来)统计自己的数据(就是再统计一遍轻儿子的数据,加上本节点的数据)
树上
启发式
合并
(
DSU
on
Tree
)
一种在 O(nlogn) 复杂度内求
树上
问题的算法。
dsu
on
tree
/
树上
启发式
合并
的,没有优化的空间,但是动态开点线段树不一样,可能某个位置的左儿子,在两个线段树里不一定都存在,那我们就选存在的那个线段树的左儿子作为左儿子就行了,这个分支不用进入了,只有这个儿子两棵树都有才需要继续往下递归。具体操作的时候,关键是,如果父亲比儿子大,把儿子移动到父亲里,如果儿子比父亲大,就把父亲移动到儿子里,然后交换父亲和儿子的集合的指针,交换指针是。自带的,只能对每个位都升序或者都降序,那么我们可以把颜色取相反数,这样对个数降序,对颜色相反数降序,就是对个数降序,对颜色升序了。记录每种颜色的个数,
【图论】
树上
启发式
合并
(
DSU
on
tree
)
对于一个学生,ta只会在遇到比自己大的班的时候重新打印档案。而遇到比自己大的班后,ta所在的班的大小至少会翻倍。想想校长是怎么省钱的,就能类比出来,我们让拥有最大子树的那个子节点不清空。但是一堆人全部混在一起,太乱了,于是校长决定要分批
合并
,也就是每次
合并
两个班,
合并
。显然,我们无法在 DFS 时清空它,也无法在递归函数里开这么大的数组。为了让打印的档案尽可能少,规定:在
合并
时,只重新打印人少的那个班的人的档案。但是,我们拿的不是普通的东西,是一个长度为。类似的,我们也能证明这样的时间复杂度是。
dsu
on
tree
(
树上
启发式
合并
)
详解:
dsu
on
tree
(
树上
启发式
合并
)算法总结+习题 经典例题:https://vjudge.net/problem/CodeForces-600E 题意:一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。
dsu
on
tree
简介: 在O(N^2)的暴力做法中,我们用cnt记录每种颜色出现的次数,对于每个结点,遍历这棵子
树上
的所有结点找到答案,然后清空cnt数组。
dsu
on
tree
中,当这个结点是它父亲的重儿子时,我们就先找父亲其他儿子(轻儿子)
东北大学
2,107
社区成员
96
社区内容
发帖
与我相关
我的任务
东北大学
东北大学计算机类专业社区
复制链接
扫一扫
分享
社区描述
东北大学计算机类专业社区
辽宁省·沈阳市
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
自强不息,知行合一
试试用AI创作助手写篇文章吧
+ 用AI写文章