启发式合并/dsu on tree 姿势

Dsu on Tree

一场比赛有两道,好tm巧啊

Problem 1

这种方法其实就是通过性质优化的暴力。遍历时轻边优先。

这里写图片描述
首先肯定是拆位了,然后可以用trie维护一下某颗子树内的点的串,很容易统计答案。 (具体要看题解了)
但是暴力加/删点会T,就要用dot了。
发现计算完一个儿子的答案之后,整颗子树都被添加到了trie中。但如果要继续做其他儿子所以要清空trie.
有一颗子树是可以不用清空,用于统计当前点的答案的。 当然是重儿子最好了。于是我们把重儿子放到最后遍历就可以了。

分析一下时间复杂度,计算答案时,每一个点被加入trie的次数就是他到根所在的轻边条数。
又因为点到根的路径上轻边条数是log条,所以时间是n log n.
(每一条轻边意味着当前子树大小至少为轻边所在儿子大小a+重边大小(>a) >=2a)

Exercise

这里写图片描述

2137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值