LCA
ID_BePosit
如果今天不比昨天多做一点什么,那么明天还有什么意义。
展开
-
Closest Common Ancestors -LCA模板
E - Closest Common Ancestors POJ - 1470 如下图所示4和5的最近公共祖先是2,5和3的最近公共祖先是1,2和1的最近公共祖先是1。 1.任选一个点为根节点,从根节点开始。 2.遍...原创 2018-10-13 08:43:22 · 235 阅读 · 0 评论 -
P3128 [USACO15DEC]最大流Max Flow-树上点差分-第一弹
P3128 [USACO15DEC]最大流Max Flow 树上差分,顾名思义就是在树上搞差分,点差分: 我们在power[lca(u,v)]-=x,而是把power[lca(u,v)]-=x并把power[dp[lca(u,v)]]-=x。 因为lca(u,v)也在u..v这条路径上,它同样需要被加x。回溯的时候会从u和v两个方向都给lca(u,v)加一个x。 而它只能加一个,因此pow...原创 2018-12-01 11:22:22 · 275 阅读 · 0 评论 -
P3258 [JLOI2014]松鼠的新家-树上点差分
https://www.luogu.org/problemnew/show/P3258 题意:树上点差分即可,注意最后一个点不需要留糖果,并且,有一些点会当作起点一次并且会再次被当做终点 所以最后减去这些重复即可 #include<bits/stdc++.h>using namespace std;#define maxn 1123456int n,head[maxn...原创 2018-12-02 16:08:54 · 227 阅读 · 0 评论 -
P2680 运输计划 A-二分答案-树上边差分
https://www.luogu.org/problemnew/show/P2680 题意:首先这是一棵n个节点的树,然后对于树上的m条链,我们可以选取树上的唯一一条边使它的边权变为0 求处理后最长链的长度,要求使得最后最长链长度最小,最大值最小问题,二分答案 思路:二分答案肯定是二分的时间,然后关键是预处理与二分的check怎么实现。预处理可以通过LCA 求出树上任意两点 的距离,然后...原创 2018-12-02 15:49:17 · 181 阅读 · 0 评论 -
F - Misha, Grisha and Underground-LCA+路径
F - Misha, Grisha and Underground CodeForces - 832D 利用lca求出树上距离然后根据树上三点路径之间交点公式取其最大值即可 #include<bits/stdc++.h>using namespace std;#define maxn 200005int n,q,tot,dep[maxn],p;int d...原创 2018-10-20 11:42:42 · 174 阅读 · 0 评论 -
B - 最近公共祖先·三 HihoCoder - 1069 rmq-lca
B - 最近公共祖先·三 HihoCoder - 1069 #include<bits/stdc++.h>using namespace std;#define maxn 110000int n,k,q,sum;int deep[110001],tot;int head[110001],dp[110001][20];map<string,int&...原创 2018-10-18 20:31:14 · 168 阅读 · 0 评论 -
A - 最近公共祖先·一 HihoCoder - 1062 暴力找lca
A - 最近公共祖先·一 HihoCoder - 1062 #include<bits/stdc++.h>using namespace std;int n,m;map<string,string > pre;void FindAnscetor(string str1,string str2){ map<string,int &...原创 2018-10-18 20:26:06 · 185 阅读 · 0 评论 -
D - Network POJ - 缩点判桥TARJAN+LCA
D - Network POJ - 3694 一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥 解题思路:边连通分量+LCA。首先运行一次tarjan,求出桥和缩点,那么无向图将缩点为一棵树,树边正好是原来的桥。每次连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然...原创 2018-10-14 16:27:52 · 190 阅读 · 0 评论 -
P3379 -最近公共祖先(LCA)
P3379 【模板】最近公共祖先(LCA) 倍增LCA,我们先把两个点提到同一高度,再统一开始跳。但我们在跳的时候不能直接跳到它们的LCA,因为这可能会误判,比如 4 和 8,在跳的时候,我们可能会认为 1 是它们的LCA,但 1 只是它们的祖先,它们的LCA其实是 3 。所以我们要跳到它们LCA的下面一层,比如 4 和 8 ,我们就跳到 4 和 5,然后输出它们的父节点. #inclu...原创 2018-10-13 15:32:03 · 195 阅读 · 0 评论 -
G - How far away - 倍增LCA模板
G - How far away ? HDU - 2586 题意: n个房子用n-1条路连接起来(也就是一棵树),对于每一个询问, 求出2个房子直接的线路距离 思路: 这个题目只要建立一个树,然后查询任意2个点之间的距离,假设B和C的最近公共祖先是A,那么对于整个树的根节点D, 都有:|BD|+|CD|-|AD|*2=|BC|事先求出所有点到1的距离d, 分析:倍增求L...原创 2018-10-13 10:37:59 · 217 阅读 · 0 评论 -
D - Nearest Common Ancestors -离线LCA-TARJAN-模板
D - Nearest Common Ancestors POJ - 1330 #include<stdio.h>#include<string.h>#include<vector>#define M 10007using namespace std;int in[M],pre[M],cnt[M];bool vis[M],flag...原创 2018-10-13 09:13:41 · 159 阅读 · 0 评论 -
H - Tourism on Mars URAL - 2109 -LCA-线段树
H - Tourism on Mars URAL - 2109 题意:给你 n 个点,接下来 n-1 行,每行输入 u, v 代表 u 点和 v 点无向边。 有 q 次询问。 u 到 v 的道路中,距离 1 点最近的点,是main attraction 点。 每次询问输入 u, v 问,u 到 u+1 main attraction 点,u+1 到 u+2重要的点…. v-1 ...原创 2018-11-28 16:27:23 · 167 阅读 · 0 评论