动态树分治
_beginend
这个作者很懒,什么都没留下…
展开
-
【2019 CCPC 哈尔滨站 H. Highway Buses】【点分树+最短路】
题意题目链接有一个nnn个点mmm条边的无向连通图,从每个点出发有一个花费cic_ici和限制距离fif_ifi,表示可以通过cic_ici的花费到达与它最短距离不超过fif_ifi的点。有TTT个时刻,每过一个时刻点iii的花费要加上wiw_iwi。对k=1,...,nk=1,...,nk=1,...,n,求选择某一个时刻并从111出发,走到点kkk的最小花费。n≤200000,...原创 2019-11-10 23:46:18 · 398 阅读 · 0 评论 -
bzoj 1095: [ZJOI2007]Hide 捉迷藏 动态树分治+堆
题意有一棵树,每个节点上有一盏灯,一开始全是关的。要求资瓷两个操作 C x表示将x的灯的状态改变 G表示查询最远的两个关着的灯泡的距离。 n<=100000,m<=200000分析传说中的动态树分治啊~~我们先按照树分治的顺序建一棵新的树,也就是每个节点的父亲为他的上一个分治中心。 显然这棵树的深度不会超过logn。 然后我们在这棵树上每个节点维护两个堆: b:表示该节点的子树到达其父亲原创 2017-04-20 16:37:18 · 486 阅读 · 0 评论 -
bzoj 3924: [Zjoi2015]幻想乡战略游戏 动态树分治
题意给出一棵树,边有边权。每次操作要求修改一个点的点权d,然后求一个点p使得∑dis(p,i)∗d[i]\sum dis(p,i)*d[i]最小。 n,q<=100000分析实际上也就是动态维护整棵树的带权重心。考虑先建出分治树,每个点维护三个值sd[x]表示该点子树内的点权和,sv[x]表示该点子树内所有点到该点的带权距离,tofa[x]表示该点子树内所有点到其父亲的带权距离。这里的子树和父亲都原创 2017-04-22 17:06:50 · 382 阅读 · 0 评论 -
LibreOJ #6145.「2017 山东三轮集训 Day7」Easy 动态点分治+线段树
题意给出一棵树,每次询问一个点xxx到编号在[l,r][l,r][l,r]中的点的距离的最小值。 n,q≤105n,q≤105n,q\le10^5分析先把点分树搞出来,然后对每个分治中心开一棵线段树来记录每个点到分治中心的距离最小值。 查询的话,就在该点在点分树上到根的路径中所有的线段树上查询即可。 为什么这样是对的呢?首先因为所有点都会被算到,其次,距离只会被我们算大,不会...原创 2018-04-26 21:24:23 · 456 阅读 · 0 评论 -
Codechef CHEFFIB 点分树套树状数组
题意有一棵n个节点的树,初始每个节点的权值均为0。要求资瓷q个操作: 1 u m a b表示对于任意一个节点v,若dis(u,v)≤mdis(u,v)≤mdis(u,v)\le m,则节点v的权值加上以a和b为开头的斐波那契数列的第dis(u,v)dis(u,v)dis(u,v)项。 2 u询问节点u的权值 n,q≤300000n,q≤300000n,q\le300000分析考虑...原创 2018-05-30 17:14:04 · 368 阅读 · 0 评论 -
【bzoj 3730: 震波】【动态树分治】
题意给出一棵树,点有点权,每次询问距离一个点不超过kkk的点的点权和,或者修改一个点的点权,强制在线。n≤100000n\le100000n≤100000分析把点分树建出来,然后对每个分治中心用树状数组维护到该点距离为定值的点权和,以及到他点分树上父亲距离为定值的点权和。查询的时候每次沿着父亲往上跳,在计算当前点贡献时需要减去上一个点所在子树的贡献。时间复杂度O(nlog2n)O(n\...原创 2019-09-08 21:34:23 · 277 阅读 · 0 评论