随笔分类 - 点分治
摘要:题目大意:给你一颗n个节点的树,最初点集S为空。 有m次操作:往当前点集S中加入/删除一个点,询问点x至集合S中任意点的最小距离,回到第t次修改点集的操作后的状态。 数据范围:n,m≤105 我们先无视这个可持久化的要求,考虑下不可持久化怎么做。 显然考虑动态树分治。 令点v为当前分治中心,u
阅读全文
摘要:题目大意:有一棵n个节点的树,点的标号为1到n。树中的边有边权。给你m个询问,每个询问包含三个参数l,r,pos,你要求出标号在l到r之间的所有点中,到节点pos距离最近的点离pos有多远。 数据范围:n,m,l,r,pos≤105,强制在线。 此题我强制在
阅读全文
摘要:题目大意:给你一棵n个点的树,树边上有边权,对于每一个点,你要求出经过该点的所有的路径中,路径异或和最大的值。 数据范围:n≤105,边权≤109。 我们考虑枚举每一条路径,显然这个是会T的,于是我们用点分治来实现这个过程。 对于一棵以x为根的子树,假设它有k个儿子,编号$v1.
阅读全文
摘要:题目大意:给你一棵n个点的带权树和正整数K,求每个点到其它所有点距离中第K大的数值。 其中,边权≤10000,n≤50000。 我们通过原树构建一棵点分治树,令fa[u]为u在点分树上的father。 对于每个点u,我们维护两个有序数组f和g。 其中$f[
阅读全文
摘要:题目大意:给你一棵n个点的树,每个点有一个点权x,问你所有路径中点权异或和最大的路径的异或和 数据范围:n≤30000,x≤231−1。 如果是边上有点权的话非常简单,直接一个trie就可以水过去了。 然而这题是点权,非常烦人。我们考虑用点分治去解决。 假设当前需要遍历的树
阅读全文