一类点分治和点分树相关问题的总结

一类点分治和点分树相关问题的总结

这些天刷了很多点分治和点分树的相关问题,来总结一下

首先这些问题是比较套路化的,

树上全路径问题,连通块问题的计数和判定,一般都是用到点分治/点分树。

统计的办法有两种,一种是考虑容斥,一般用于计数,一种是枚举子树统计。

前者好写常数较大,后者常数较小,细节较多

一般求路径长度<=k的数目,每个路径长度准确数目,常用第一种,一般还可能通过排序形成偏序关系,利用数据结构维护,常见的有树状数组、单调队列按秩合并维护

枚举子树统计的话,一般是这两种方法,要么当前根不保留,计算的时候保留,要么保留,计算的时候去掉当前根,具体问题具体分析,此外,一定要注意端点的贡献->**考虑分治重心作为单个端点,单条链。**另外,两者都要注意情空当前层重心的贡献

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ur0Djmyz-1618559039923)(C:\Users\98753\AppData\Roaming\Typora\typora-user-images\image-20210415140836486.png)]

与连通块有关的问题呢,如果是多次询问 o r or or 修改 ,我们就得拿出点分树了,每个重心维护自己分治的区域,更新的话只对点分树上的祖先路径有贡献,可以把深度压到 O ( l o g n ) O(logn) O(logn)层常见的套路就是每个点维护两个数据结构,一个是自己对自己的贡献,一个是自己对父亲的贡献,也是比较套路的题目。下面列出一些题目

点分治
gym101234D
cf293E
libreoj2179
cf715C
gym102452C
bzoj2152
hdu5909
hdu5977
bzoj4016
hdu4812
bzoj2599
poj1741
bzoj4860

点分树
libreoj6145
bzoj3924
bzoj4372
bzoj3730
bzoj1095

点分治/点分树题解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值