题面 POJ1741 解析 刚学了点分治,练一练模版题 过程就不多说了,主要说说细节 在每次查询下一棵子树时, 传进去的整棵子树大小是上一次的$siz$, 这个数据其实是错的, 但好像并不影响时间复杂度, 这样的话找重心就必须找最大子树最小的点了,否则会错。因此需要存一个当前最大子树最小的点的最大子 ...
分类:
其他好文 时间:
2019-10-01 10:00:08
阅读次数:
82
poj1741 题:http://poj.org/problem?id=1741 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; typedef long l ...
分类:
其他好文 时间:
2019-09-21 15:01:06
阅读次数:
90
题目链接:https://vjudge.net/problem/POJ-1741 题意:给出一棵树,求出树上距离不超过k的点对数量。 思路:点分治经典题。先找重心作为树根,然后求出子树中所有点到重心的距离dis[i],那么所有组合为dis[i]+dis[j]<=k,其中不合法组合为在重心的同一个子树 ...
分类:
其他好文 时间:
2019-08-20 12:20:49
阅读次数:
81
我们知道,树上两个点的LCA要么是当前根节点,要么不是。。所以两个点间的最短路径要么经过当前根节点,要么在一棵当前根节点的子树中。。 考虑点分治,于是在原来同一子树中的两个点必然在一次分治中变为路径经过当前根节点的两个点。 处理路径经过当前根节点的两个点的情况。对于当前树,每个节点(根节点除外)记录 ...
分类:
其他好文 时间:
2019-06-07 23:18:52
阅读次数:
225
分治的时候SZ感觉是错的……但是貌似第一次找好重心就够了,之后SZ别太离谱就不会T,重心随一随缘就好…… C++ include include include using namespace std; const int maxn = 1e4 + 5; int n, k, mx, SZ, ans; ...
分类:
其他好文 时间:
2019-05-04 09:29:52
阅读次数:
123
题意 Language:DefaultTree Time Limit: 1000MSMemory Limit: 30000KTotal Submissions: 32398Accepted: 10810DescriptionGive a tree with n vertices,each edge ...
分类:
其他好文 时间:
2019-03-30 13:18:13
阅读次数:
134
引入 考虑比树链剖分稍微简单的情况,统计树上具有某种特殊性质的路径,而不发生修改。(这部分按道理来讲应该接在线段树/树状数组/分块之类的后面学才对啊) 一般来讲这些树都是无根树。 对于一条链,可以取中间的一个点,把它划分为两个部分(分别属于这个点的两课不同子树)。之后可以利用分治的方法对于每一棵树都 ...
分类:
其他好文 时间:
2018-12-14 00:59:58
阅读次数:
165
题目大意:给定一棵 N 个节点的无根树,边有边权,统计树上边权和不大于 K 的路径数。 对于每条树上路径,对于每一个点来说,该路径只有经过该点和不经过该点两种情况,对于不经过该点的情况,可以转化成是否经过以该点为树根的子树节点的子问题,由此构成一个分治策略。 对于点分治来说,限制算法复杂度的瓶颈之一 ...
分类:
其他好文 时间:
2018-11-06 00:47:43
阅读次数:
140
poj1741板子套一套,统计对数的方式改一下,可以在O(n)时间内统计对数 最后不要忘记输出最后的“.” ...
分类:
其他好文 时间:
2018-10-27 23:36:43
阅读次数:
363
本文代码来源:https://blog.csdn.net/yang_7_46/article/details/9966455 本文参考论文来源:https://wenku.baidu.com/view/8861df38376baf1ffc4fada8.html?re=view 基于点分治的树分治算法 ...
分类:
其他好文 时间:
2018-10-27 01:28:05
阅读次数:
188