【题目分析】 这貌似是做过第三道以Tree命名的题目了。 听说树分治的代码都很长,一直吓得不敢写,有生之年终于切掉这题。 点分治模板题目。自己YY了好久才写出来。 然后1A了,开心o(* ̄▽ ̄*)ブ 【代码】 ...
分类:
其他好文 时间:
2017-02-02 11:01:45
阅读次数:
141
思路参考于:http://blog.csdn.net/yang_7_46/article/details/9966455,不再赘述。 复杂度:找树的重心然后分治复杂度为logn,每次对距离数组dep排序复杂度为nlogn,而找重心的复杂度为dfs的复杂度——O(n),因此总的复杂度为O(nlognl ...
分类:
其他好文 时间:
2017-01-29 15:29:14
阅读次数:
228
哈哈哈哈哈哈哈哈哈哈哈哈我终于过了!!!!!!!!!!!!!!! 从昨天上午就开始写了,下午回家之后调了一会儿没什么感觉,就删了重打了一遍,然后调了一晚上+今天半个上午......我*******终于过了...... 我是萌萌的传送门 我是另一个萌萌的传送门 一道极其恶心的动态树分治...... 首 ...
分类:
其他好文 时间:
2017-01-22 12:21:55
阅读次数:
156
题目链接:开店 这道题显然一眼树分治,维护点分的结构,在每个点上,对每种年龄到这个点\(u\)以及他在点分树上父亲的距离和建一棵主席树,查询的时候一路往上跳即可。 但是我太懒了(其实你要说我不会也可以),所以并不想写这种东西。于是,我就只能尝试一下别的方法。 设一个点\(u\)的年龄为\(y_u\) ...
分类:
其他好文 时间:
2017-01-22 10:34:48
阅读次数:
224
POJ 1741 题意:求一棵树中点对<=k的数量。 总结:点分治,搞不太懂。。大概敲了一遍 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<st ...
分类:
其他好文 时间:
2017-01-17 08:06:11
阅读次数:
246
题意:给一棵树,只有点权无边权, ,每次询问求以一个点为中心,半径为k的全职和。 考虑动态树分治。我们对于每个点(点分树)维护两个树状数组。两个树状数组都以距离为下标,权值为内容。第一个树状数组维护子树中距离该点为k的权值和,第二个维护距离该点父亲距离为k的权值和。这样改权值时我们暴力爬树高,log ...
分类:
其他好文 时间:
2016-12-22 06:44:48
阅读次数:
174
题目链接: Garden of Eden Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 210 Accepted Submission(s ...
分类:
其他好文 时间:
2016-11-08 14:16:07
阅读次数:
269
【题意】 给定一棵边带权的无根树,求树上距离不超过k的无序互异点对的个数。 【解法】 树分治练手题…… 三种分治,点分治,边分治,链分治,都可以。 点分治应该也不难写,然而懒得写平衡树了,就用的相对好想好写的边分治。(因为感觉点分治需要用平衡树……) 点分治是选重心当根节点,然后统计经过根节点的路径 ...
分类:
其他好文 时间:
2016-11-06 09:29:18
阅读次数:
230
题意: 求树上距离小于等于K的点对有多少个 思路: 每次分治,我们首先算出重心,为了计算重心,需要进行两次dfs,第一次把以每个结点为根的子树大小求出来,第二次是从这些结点中找重心 找到重心后,需要统计所有结点到重心的距离,看其中有多少对小于等于K 但是这些求出来满足小于等于K的里面只有那些路径经过 ...
分类:
其他好文 时间:
2016-10-22 14:40:16
阅读次数:
282
题意:求一棵树上任意两点之间距离小于k的点对有多少个 分析:树分治的练手题,找到重心以后,我们要求所有经过中心的点,如何求这样的点呢,显然,所有的路径可以分为过重心,不过中心,终点是重心,所有点到达重心的距离很好求,可以很容易的求出,这些边由两部分组成,来自不同的儿子和来自相同的儿子,只要减去来自相 ...
分类:
其他好文 时间:
2016-10-12 22:00:56
阅读次数:
185