点分治
200815147
这个作者很懒,什么都没留下…
展开
-
点分治时间复杂度
前言:半年前学习的时候没有管这个问题,现在才搞懂。结论:点分治的时间复杂度为O(nlogn)O(nlogn)。大致证明:由于每次都是找数的重心,所以处理完一个大小为nn的树后,它的每个子树,大小都是最大为n2\frac{n}{2},所以最多分治lognlogn层,每层都是nn,故时间复杂度为O(nlogn)O(nlogn)。原创 2018-01-16 15:47:47 · 1833 阅读 · 0 评论 -
1468: Tree 点分治
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K题解:经典点分治……以前的模板好像有一点问题,这次加了个gettot函数,相当于多了个常数。代码:#includeusing namespace std;#define LL long long#define pa pairconst int Maxn=40010;原创 2018-01-17 13:39:50 · 226 阅读 · 0 评论 -
集训0403 problem A 点分治
题解:考试时只会70分的O(nlog2n)O(nlog2n)O(nlog^2n)的做法,就直接点分治,对每个重心xxx维护一个poweri−dis[i][x]poweri−dis[i][x]power_i-dis[i][x]的前缀和,可以用数据结构维护。但是我们发现在下一层,我们所需要的答案只会减少一个值,所以就可以不同数据结构维护,做到O(nlogn)O(nlogn)O(nlogn)。 注...原创 2018-04-18 21:15:56 · 176 阅读 · 1 评论 -
[LOJ]#6159. 「美团 CodeM 初赛 Round A」最长树链 点分治
Description:Mr. Walker 最近在研究树,尤其是最长树链问题。现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1。请求出这条最长的树链的长度。题解:我的做法大概是最差的……不过是我自己想的。点分治,对于每个重心找经过它的路径答案,设fif_ifi表示最大公约数为iii倍数的最大深度,由于每个数不同的质因数不会超过101010个...原创 2018-12-28 19:12:39 · 383 阅读 · 0 评论 -
[LOJ]#2065. 「SDOI2016」模式字符串 点分治+hash
Solution首先用点分治可以统计出每个点到分治中心路径上的串是否是一个由若干模式串重复得到的串的前缀或者后缀。然后就是统计答案,卷积?并不需要,只需要动态统计即可。细节还是有一点的。Code#include<bits/stdc++.h>using namespace std;#define LL long long#define pa pair<int,int&g...原创 2019-02-27 07:28:48 · 189 阅读 · 0 评论