话谈——点分治

话不多说,因为也没有太多时间闲聊,就简单说一下吧。
点分治,既然是“分治”,那么其一定运用了分治思想。
分治思想:简单来说就是将一个复杂问题拆分成几个小问题再依次解决。
点分治,就是在分治思想的基础上,以点作为划分依据,来解决树上问题。
点分治多用来处理与树上路径有关的问题,其实现方法便是每一次找树的重心(一棵树上某一点的最大连通块最小的点即为此树的重心)。找到树的中心后,我们便将树上路径问题转化成了两个子问题:
1.经过重心的路径;
2.不经过重心的路径(即去掉重心后每一个连通区域内的路径)。
对于问题1,我们就依托重心,来记录并处理相关信息。
那么,对于问题2,我们可以再重复上述步骤,即找重心,处理路径信息。最后,递归到只剩下单个点时,便退出递归。
其时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn),因为其总共递归的层数不会超过 l o g n logn logn,而其每一层的递归基本上都会将 n n n个点遍历,所以总复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
点分树:又称动态点分治。其实就是讲点分治所划分的每个问题都存下来,方便后续的调用。因为其会多次找到之前存下来的子问题,所以称“动态”,但因为其存在了类似树的结构中,所以,又叫做点分树。
总结:高级的暴力。所以,同学们要勇于写暴力啊(滑稽~)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值