【笔记】树的分治

暑假的时候WTH大神就讲过思想了QAQ(顺带Orz Fuckstrom 自悟)

树的分治,简单地说,就是把树分为好几个,对于每个递归处理后,再计算整棵树的答案,也就是序列上的分治思想放到了树上。树的分治分为点分治和边分治。

点分治,即为把某个点删除后,树分为好多棵,对那些树处理然后计算答案。

边分治即割掉边,把树分为两棵,然后进行处理。

点分治中被删除的点应该选重心,这样树最多被分logn次,若每次处理当前树都是O(n)的,总复杂度为O(nlogn),边分治同理。

但点分治会把树分为好多棵,极限情况下(菊花图)可以被卡成O(n^2)。而边分治可以保证分成两棵,比点分治更优,但碰到菊花图依然是O(n^2)。

可以通过加【无用点】来改变树的形态但不影响答案,来改善时间复杂度,强行转为二叉树,这样就能保证O(nlogn)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值