分治-树分治
Maxwei_wzj
AFO
展开
-
【BZOJ2152】聪聪可可-树的点分治
【BZOJ2152】聪聪可可-树的点分治原创 2017-04-27 17:17:35 · 294 阅读 · 0 评论 -
【BZOJ3648】寝室管理-环套树+点分治+树状数组
测试地址:寝室管理 题目大意:给定一棵树或环套树,求图中经过至少kkk个点的路径数。 做法:本题需要用到环套树+点分治+树状数组。 先考虑树上的做法。对于这种树上路径计数的问题,应该能形成一种条件反射了,不能DP马上想到点分治。点分治中,每一次我们考虑过某个点的合法路径数时,先把子树列成一列,对于一棵子树里的所有点,它到根的距离disdisdis和之前子树中的点到根的距离xxx应该满足x+d...原创 2018-08-05 11:31:50 · 283 阅读 · 0 评论 -
【BZOJ3451】Normal-概率期望+点分治+NTT
测试地址:Normal 题目大意:将点分治中找分治重心的过程,变成随机在当前块中取一个点,点分治的每一步骤(即处理一块)消耗的时间为块的大小,问总消耗时间的期望。 做法:本题需要用到概率期望+点分治+NTT。 首先根据期望的线性性,不难想到分开计算每个点被计算的期望次数,累加起来就是答案。而每个点被计算的次数,等于它在点分树上的深度(根深度为111),那么对于一个点xxx,某点yyy(可以是...原创 2018-06-07 22:27:33 · 347 阅读 · 0 评论 -
【BZOJ4012】开店(HNOI2015)-动态点分治+set
测试地址:开店 做法:本题需要用到动态点分治+set。 注意到每次只询问一端为定点的所有路径,这就提示我们使用动态点分治。我们每次查询时,从询问点开始在点分树上往上走,每走到一个点,就统计另一个端点在这个点的某棵子树中的所有路径的贡献,包含询问点的子树是不计算的(因为会算重),因为一个点度数最多为333,所以一个点的子树数量是常数级别的。 那么怎么计算这个贡献呢?我们需要求在点分树的某棵子树...原创 2018-05-18 11:59:14 · 163 阅读 · 0 评论 -
【BZOJ1095】捉迷藏(ZJOI2007)-动态点分治+堆
测试地址:捉迷藏 做法:本题需要用到动态点分治+堆。 一棵树上有黑点和白点,求两个黑点之间的最远距离,如果没有修改,我们完全可以使用DP或者点分治的方法求出。现在的问题是带了修改,那么从DP的角度来考虑就比较难了,所以我们从点分治的角度考虑怎么拓展。 回顾点分治的思路,我们对一棵树找到它的重心,然后递归处理删去这个点后该树分成的所有子树。对于每一棵树,考虑过重心的所有路径,用类似DP的方法可...原创 2018-05-17 17:21:43 · 221 阅读 · 0 评论 -
【SPOJ1825】Free Tour II-点分治+桶排序
测试地址:Free Tour II 题目大意:给定一棵树,边有边权,点分为黑点和白点,求经过不超过KKK个黑点的路径的最大边权和。 做法:本题需要用到点分治+桶排序。 首先看到求这样的路径问题,如果DP看上去非常难做,就考虑用点分治。 对于点分治中每个块的根节点,我们考虑求经过这个根节点的合法路径的最大边权和。对于块中的每个点我们得到了一个数对(x,y)(x,y)(x,y),其中xxx为从...原创 2018-04-02 22:28:24 · 267 阅读 · 0 评论 -
【BZOJ4675】点对游戏-点分治+概率期望
测试地址:点对游戏 做法:本题需要用到点分治+概率期望。 首先,我们发现每个人选的点数一定是固定的。其次,我们发现一个人选kkk个点时,选到每种kkk个点的组合的概率都相等(因为每一步都等概率)。那么根据期望的线性性,我们可以分开考虑每个点对的贡献。 如果一个点对之间的距离不是幸运数,显然不对答案有贡献,否则它就处于Ck−2n−2Cn−2k−2C_{n-2}^{k-2}个组合中,因为每个组合...原创 2018-04-08 09:20:42 · 420 阅读 · 0 评论 -
【POJ1741】Tree-树的点分治
【POJ1741】Tree-树的点分治原创 2017-04-26 17:14:42 · 344 阅读 · 0 评论