
点分治
文章平均质量分 64
g1n0st
明日安在,无人能允知乎专栏: zhuanlan.zhihu.com/g1n0st
展开
-
[BZOJ3697][[FJ2014集训]采药人的路径][点分治]
[BZOJ3697][[FJ2014集训]采药人的路径][点分治]题目大意:给定一棵N≤100,000N\le100,000的无根树,树边的权值为0,10,1,求树上有多少条路径中0,10,1的数量相等且把这条路径在某一点分成两条子路径,每条子路径中0,10,1的数量也相等。思路:这题一眼就看出来要用点剖(其实是我在百度上搜的点剖题),然而并不会做,于是去黄学长的博客里学习了一发。首先为了方便,我们原创 2017-02-28 11:37:02 · 564 阅读 · 0 评论 -
[BZOJ 3784][树上的路径][点分治+堆]
[BZOJ 3784][树上的路径][点分治+堆]题目大意:给定一个NN个结点的树,结点用正整数1…N1…N编号。每条边有一个正整数权值。用dist(a,b)dist(a,b)表示从结点aa到结点bb路边上经过边的权值。其中要求b>ab>a。将这n(n+1)2\frac{n(n+1)}{2}个距离从大到小排序,输出前MM个距离值。思路:这道题和[BZOJ2006 超级钢琴]类似,没有过的同学可以先切原创 2017-02-23 14:02:24 · 449 阅读 · 0 评论 -
[BZOJ3730][震波][动态树分治+线段树+LCA]
[BZOJ3730][震波][动态树分治+线段树+LCA]题目大意:给定一棵树,要求支持两种操作: 操作 描述 (0,x,k)(0,x,k) 求所有和节点x距离不超过K的节点权值和 (1,x,y)(1,x,y) 将节点x的权值修改为y思路:树分治题,首先求出每个重心,对重心连边形成点分树。然后在每个重心上动态开两颗线段树。用在x位置增加y表示距离重心x的位置有一个权值为y的点原创 2017-02-23 16:00:42 · 1902 阅读 · 0 评论 -
[BZOJ4317][Atm的树][LCA+点分治]
[BZOJ4317][Atm的树][LCA+点分治]题目大意:求大小为NN一棵无根树上每个点和其它所有点树上路径中第KK长的路径。思路:这种树上路径统计问题应该一眼就能看出是树分治裸题吧。。。但是即使是裸的,代码量依然大得吓人(所以LCA倍增数组开小了一位刚好溢出调了好久。)先对树点分一遍,对每个重心所管辖的所有子节点连接重心的路径都维护到重心上的权值线段树(线段树要动态开不然会炸),还要预处理出点原创 2017-02-27 16:01:36 · 696 阅读 · 1 评论 -
[BZOJ4372][烁烁的游戏][动态树分治+线段树+LCA]
[BZOJ4372][烁烁的游戏][动态树分治+线段树+LCA]题目大意:给定一颗nn个节点的树,边权均为11,初始每个点权值为00 。 其中操作QQ xx询问x点的点权,操作 MM xx dd ww把xx点周围距离不超过ww的点权值加上ww。思路:应该是一棵蛮裸的动态树分治,和BZOJ3730 : http://blog.youkuaiyun.com/g1n0st/article/details/56674原创 2017-03-06 18:27:25 · 392 阅读 · 0 评论 -
[BZOJ2117][[2010国家集训队]Crash的旅游计划][点分治+二分答案]
[BZOJ2117][[2010国家集训队]Crash的旅游计划][点分治+二分答案]题目大意:求树上每个点第k长的路径。思路:这道题和这道题应该是双倍经验:http://blog.youkuaiyun.com/g1n0st/article/details/58127733但是我那道题的代码交到这里来并过不了。首先还是考虑对树进行分治然后二分答案,但是维护树上路径可以直接用vector而不是线段树,因为并没有对原创 2017-03-15 08:34:24 · 1314 阅读 · 0 评论