树链剖分
文章平均质量分 92
andyc_03
这个作者很懒,什么都没留下…
展开
-
树链剖分
【算法介绍】树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。当树的形态不发生改变的时候,我们可以先对其进行链的剖分,每条链就相当于一个序列,操作就可以被拆分成几条完整的链来解决,然后利用一些数据结构加以维护即可。我们希望通过这样的方式,来达到一些树上修改、计算的目的【算法流程】轻重链剖分概念引入:把一个节点u的所有儿子中size[v]最大的一个作为重儿子,则称(u,v)为重边,u到其余的儿子v'的边(u,v')为轻边。性质:(u,v)为轻边.原创 2021-04-17 23:55:45 · 1776 阅读 · 1 评论 -
P3384 【模板】轻重链剖分
代码#include<bits/stdc++.h>using namespace std;const int maxn=2e6+5;int n,m,r,p,tot,cnt;int val[maxn],head[maxn],dep[maxn],top[maxn],id[maxn],re_val[maxn],sz[maxn],fa[maxn],son[maxn];struct tree{ int l,r,sz,w,lz;}tr[maxn<<2];stru...原创 2020-09-16 22:39:00 · 80 阅读 · 0 评论