
点分治
文章平均质量分 66
616156
赛高______↑
展开
-
【数据结构&图论】BZOJ1095Hide 捉迷藏
题目大意给出一颗树,每个点都是黑/白色,初始状态每个点都是白色的, 有两种操作: 1,翻转某个点的颜色 2,询问整个图中最远的两个白色点的距离(若没有白色点输出-1,只有一个输出0)分析本题有 动态点分治/线段树储存括号序列 两种做法。 这里只介绍动态点分治的方法。 这个思路其实非常的淳朴,我们考虑对于单次询问,我们需要的操作: 按重心拆分树,对于每个重心,找到能经过该点的最大路径,最后原创 2017-12-09 08:47:10 · 1451 阅读 · 2 评论 -
【数据结构&图论】SPOJ Free tour II
题目大意:给出一颗树,有些点被染色过,每条边有一个权值,求这棵树上不经过k个染色点的最长路径(起点终点可以相同)分析:非常裸的点分治,套一个树状数组存储经过k个染色点的最短路径,为了避免卡常,我用了一个更新标记数组,不难实现。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>原创 2017-12-11 13:41:52 · 216 阅读 · 0 评论 -
【图论】点分治总结&POJ2114Boatherds题解
点分治适用问题:统计一棵树上的路径的问题,因为树上的路径需要一个起点和终点来确定,所以朴素算法的复杂度常常为O(n2)O(n^2),然而,点分治可以将复杂度降为O(nlogn)O(n log n)。大体思路:首先我们引入一个“树的重心”的概念 定义一个点的权值为它的最大子树的大小 权值最小的一个点(或许有多个,但在点分治中并不在意这些)。有一个很显然的性质:以重心为根,最大子树的大小,必然不原创 2017-12-04 18:22:37 · 320 阅读 · 0 评论 -
【点分治】SRM624 TreeColoring
题意:给出一颗树,最开始所有点都是白点,在树上维护两种操作: 1、将某个点染为蓝点 2、询问所有蓝点到某个点的距离和分析:根据点分治算法的核心思想:每次处理经过重心的问题,再分治; 我们可以把每个询问离线操作,在每一层,我们处理操作位置在当前联通块内的询问。 这样一来,每个询问只会被执行log nlog nlog \space n次。 对于统计答案,我...原创 2018-03-21 14:55:16 · 151 阅读 · 0 评论 -
【点分治】Codeforces716E Digit Tree
分析: 说实话,并不知道这题怎么用启发式合并来做。。。总之它就放在启发式合并的练习里面了。。。但我就是用点分治做的。。。其实这题点分治做起来非常简单。。。首先先向下找每条到达当前重心的路径的权值,将其设为bibib_i然后再每条边依次考虑从重心走下去的权值,将其设为aiaia_i然后对于这个重心的方案无非就是ai∗10deepj+bj=0(mod p)ai∗10...原创 2018-07-29 23:00:13 · 253 阅读 · 0 评论 -
【点分治】【数据结构】Codeforces1019E Raining season
题意:给出一棵树,每条边的距离都是一个一次函数,给出斜率k和截距m。(y=k*x+m) 现在求当x=0,1,2,……,t-1时,整个图中最远点的距离。分析:这题一股浓郁的OI气息啊。。。(思路简单实现复杂的数据结构题)首先,如果不考虑那个神奇的边权,那么就是一个简单的点分治水题。。。现在考虑加上这个边权,很容易发现,最终答案一定是一个下凸壳。所以可以维护这个凸壳中...原创 2018-08-13 10:35:24 · 638 阅读 · 1 评论 -
【点分治】【点分治序】BZOJ3784 树上的路径
分析:首先,定义点分治序为:每次找到重心后,以重心为根,当前子树的DFS序。每一个重心的DFN序次连接,就组成了点分治序。显然,点分治序的长度是NlogNNlog NNlogN级的。现在,根据一般点分治的方式,在以X为重心时,我们要找到所有子树中的点,与X的距离。对某个点u而言,如果考虑u->x->v的一条路径,则v不能在与u相同的子树中。且这个v在点分治序上的位置是相邻的。...原创 2018-10-29 19:13:45 · 374 阅读 · 0 评论 -
【点分治】【FFT】2019雅礼集训 bracket
题目:分析:太过套路这里就简单说说显然,当询问数k很小时,就是个裸的点分治题。现在k变大了。那就FFT算贡献。#include<cstdio>#include<cstring>#include<cmath>#include<vector>#define SF scanf#define PF printf#define MAX...原创 2019-01-12 11:02:41 · 320 阅读 · 0 评论 -
【点分治】VW's Contest #1 C
分析:考场上没来得及看其实也不难点分治水水就过了每次加入链最大值最小的,这样每次加入时,能够保证它是所有已加入点的最大值。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<vecto...原创 2019-03-29 16:21:14 · 208 阅读 · 0 评论