进行边分治时,每个点有一棵二叉链(称这个为边分树链)和指向这个二叉树的某个结点,称这个为auau。初始时每棵二叉树都只有一个结点,auau就是唯一的那个结点。 然后每次分治,称在一个连通块内的点为黑点,另一个连通块内的点为白点,若当前点为黑点那么给auau新建一个左儿子并且移动auau到新建的这个点,否则新建右儿...
inttot, ch[N *30][2], tr[N], root[N];//每个点的边分树,根的边分树ll sum[N *30][2], sz[N *30][2], lstans;intn, q, aa[N], u, v, w, t, a, b, c;structTree{inth[N], e[N <<1], ne[N <<1], w[N <<1], idx;Tree() {memset(h,-1,sizeofh); }voidadd(...
经典的做法是边分树合并。 边分树结构类似0/1 trie 就是把边分树对于每个点拆开路径 合并两棵边分树同时可以得到两个边分树之间点对的路径的信息 感觉有点类似线段树合并。 根据“猫树”思想,两点间的路径一定经过边分树上LCA的那条边。(u,v不相等) 我们考虑在这个LCA处统计贡献 具体地,先对1树进行边分治 每个点...
这题好像有两种做法,一种是边分治 + 虚树,另一种是边分树 …… 我只写了第二种,但我把两种做法都介 kou 绍 hu 一番。 两种做法一开始都需要用到边分治,这里先简单介绍一下边分治。 边分治是一种树上分治的方法,常用于处理与树上路径有关的问题。主要思想是先选取一条关键边,把这条边「断掉」后将树分...
随笔分类 - 公告 欢迎各位大佬加友链、加QQ QQ:1252644670(请备注省份和年级) 带有密码的博客,如需访问请qq联系博主 如有疑问或建议欢迎在博客下面留言 昵称: 园龄: 粉丝: +加关注 <2025年1月> 日一二三四五六 2930311234 567891011 12131415161718 19202122232425...
注意到边分树是一个二叉树的结构,直接采用线段树和并的写法合并; 学习了一下边分治: 每次选择一条边(u,v)(u,v),使得两边的子树最大sizesize最小,不断分治; 考虑直接分析复杂度: 这部分理论是cjlcjl老师在济南讲课的时候说的,网上说了这个的好少。。。 设...
BZOJ - 3730 震波 (点分树/边分树+树状数组) 两种操作: 1.查询与树上结点x距离不超过k的结点权值之和 2.将结点x的权值修改为y 点分树模板题。 首先考虑一种比较暴力的做法:用树形dp的思想,将树转化成有根树,设f[u][k]为结点u子树下与其距离不超过k的点权和,则ans(x,k)=f[u][k]+f[fa[u]][...
随笔分类 -边分治/边分树 【loj2339】【WC2018】通道 摘要:题目 三棵带边权的树,求dis1(u,v)+dis2(u,v)+dis3(u,v)dis1(u,v)+dis2(u,v)+dis3(u,v)的最大值1≤n≤1051≤n≤105题解 对T1T1做边分治,把分治边的两边分别染成白色和黑色,设分治边权值为WW距离变成: $$ d1(u) + d1(v)...
随笔分类 - 阅读全文
本质上是边分树合并,类似线段树合并,边分树的结构本身是确定的,维护的是每个节点的信息。 建立nn棵边分树,第ii棵表示a1,a2,⋯,aia1,a2,⋯,ai的信息,查询就差分一下,拆成∑ri=1dis(ai,v)∑i=1rdis(ai,v),枚举 lca 计算贡献,修改就重构第xx棵边分树。