传统的树分治,不能处理在线的询问。我们可以把每次点分治的重心和它分割出的子树的重心连接,容易发现形成了一颗新的树。这棵树有哪些性质呢?首先,树高不超过log(n),其次,一个节点原子树中的所有节点,依然在新树里它的子树中。因为树高只有log(n),所以我们考虑从一个点出发的路径时,可以枚举它到新树中...
分类:
其他好文 时间:
2015-12-30 13:42:10
阅读次数:
150
2152: 聪聪可可Time Limit: 20 SecMemory Limit: 256 MB题目连接http://www.lydsy.com/JudgeOnline/problem.php?id=2152Description聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一...
分类:
其他好文 时间:
2015-12-04 18:11:08
阅读次数:
137
暴力部分: 这个题一开始的想法是 n^2 枚举两个点,然后logn维护LCA,在倍增的同时维护异或值和 k 的个数。 s_z_l老爷指导了新的思路,既然这个树只有n^2个LCA,那么枚举LCA,同时向下深搜即可。标算: 首先点分治,尽力保证树的平衡,然后按照Trie树的性质,贪心,至于k,我们...
分类:
其他好文 时间:
2015-12-04 14:22:12
阅读次数:
230
树的点分治,在分治的时候将所有点到根的距离依次放入一个数组q中。对于一棵子树里的点,合法的路径一定是q[L]..q[R]的某个数加上自己到重心的距离。定义五元组(v,l,m,r,w),表示当前路径长度为v,在[l,r]里选出最大值m,并加上w。用大根堆维护这些五元组,每次取出v最大的元素,并扩展出[...
分类:
其他好文 时间:
2015-11-23 00:42:56
阅读次数:
192
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=175801分数规划,所以我们对每个重心进行二分。于是问题转化为Σw[e]-mid>=0, 对于一棵子树维护点的dep,dis,并用队列q存下来。令mx[i]表示当前dep为i的最大权值,维护一个单...
分类:
其他好文 时间:
2015-11-22 13:58:44
阅读次数:
158
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1316因为只要求存在某条路径长度为K,所以点分,然后用set判断差值是否在set中就可以了。#include#include#include#include#include#include#inc...
分类:
其他好文 时间:
2015-11-22 09:56:14
阅读次数:
601
题意:给一个N个带权节点的树,权值以给定的K个素数为因子,求路径上节点乘积为立方数的路径条数思路:立方数的性质是每个因子的个数为3的倍数,那么每个因子只需要保存0-2三个状态即可,然后路径就可以转化为一个K位3进制数,点分治后,便可以用一个map来查询路径经过根的答案。代码与上一题(poj1741)...
分类:
其他好文 时间:
2015-11-12 22:00:27
阅读次数:
282
题意:给一个N个节点的带权树,求长度小于等于K的路径条数思路:选取一个点作为根root,假设f(root)是当前树的答案,那么答案来源于两部分:(1)路径不经过root,那么就是完全在子树内,这部分可以递归统计(2)路径经过root,这部分可以通过容斥原理统计,具体见有关点分治资料。。。点分治有个特...
分类:
其他好文 时间:
2015-11-12 21:23:54
阅读次数:
254
平面最近点对,即平面中距离最近的两点分治算法:int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对{double ans;//answer0)调用前的预处理:对所有点排序,以x为第一关键词y为第二关键字 , 从小到大;1)将所有点按x坐标....
分类:
编程语言 时间:
2015-10-24 12:52:19
阅读次数:
227
树的点分治,将点分治的过程记录下来,每一个分治结构按到分治中心的距离维护所有点。对于一个点二分答案,然后在$O(\log n)$个分治结构中二分查找,时间复杂度$O(n\log^3n)$。#include#includeconst int N=50010,M=1000010;int n,m,i,x,...
分类:
其他好文 时间:
2015-10-09 22:55:39
阅读次数:
173