LCA
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
P3379 【模板】最近公共祖先(LCA)(倍增法)
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 思路 倍增。 #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 5e5 + 10; int n, m, s, p[N][21], dep[N], h[N], cnt; struct node ...原创 2019-09-02 14:31:26 · 158 阅读 · 0 评论 -
HDU 2586 How far away ?(树上倍增求两点间最短路径)
**题意:**给一个无根树,有qqq个询问,每个询问两个点,问两点的距离。求出lca=LCA(u,v)lca = LCA(u,v)lca=LCA(u,v), 然后 dis[x]+dis[y]−2∗dis[lca]dis[x] + dis[y] - 2 * dis[lca]dis[x]+dis[y]−2∗dis[lca] dis[u]表示点u到树根的距离 #include<bits/stdc...原创 2019-09-02 16:19:17 · 250 阅读 · 0 评论 -
P1967 货车运输(倍增LCA求经过路径最小值+最大生成树)
题意:A国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有q辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。给出路和城市。 思路:对此图建立最大生成树,然后要求两个城市的最大货物运载量,就是求LCA和路的最小值。 #include<bits/stdc++.h> #define ll lo...原创 2019-09-18 10:11:41 · 344 阅读 · 0 评论 -
树上差分 P3128 [USACO15DEC]最大流Max Flow
树上差分和线性差分的最基本思想是一模一样的。 点的差分 我们在线性差分上面是吧线段拆成射线,某一个点的标记代表它及以后的元素全部做一个变化;那我们在树上的某一个结点的标记就代表它所有的父亲(包括自己)都做一个变化。假如我们要在两个节点(x,y)之间的路径上的点全部+1,那么我们只需要在x上做+1的标记,y上做+1的标记,lca(x,y)上做-1的标记,father[lca(x,y)]上做-1的标...原创 2019-09-25 11:26:19 · 136 阅读 · 0 评论