随笔分类 -  树 - LCA

摘要:https://ac.nowcoder.com/acm/contest/5278/G 题意很好理解。而且很容易发现树中同一深度的松鼠才会打架。 预处理出节点的深度和dfs序,然后枚举树的深度,同一深度的所有节点和根节点s去建虚树,每建好一次就从根节点s出发跑一次树型dp dp的转移方程比较好想,设当 阅读全文
posted @ 2020-04-20 18:46 AaronChang 阅读(256) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1328/problem/E 题目所描述的是一棵树,题中已明示1为root结点。 题目可以转化为,是否存在一条路径,满足集合中的k个点到路径的距离小于等于1? 思路: 1.首先倍增离线预处理出结点深度,便于后续在线询问LCA 2.对于每次 阅读全文
posted @ 2020-03-29 00:01 AaronChang 阅读(127) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1304/problem/E 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxbit = 20; 5 cons 阅读全文
posted @ 2020-02-24 17:27 AaronChang 阅读(185) 评论(0) 推荐(0)
摘要:链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:n个村庄构成一棵无根树,q次询问,求任意两个村庄之间的最短距离 思路:求出两个村庄的LCA,dis[ i ] 表示结点 i 到树根的距离,那么任意两点u,v的最短距离就是dis[ u ] - d 阅读全文
posted @ 2020-01-17 00:11 AaronChang 阅读(121) 评论(0) 推荐(0)
摘要:链接:http://poj.org/problem?id=1330 题意:q次询问求两个点u,v的LCA 思路:LCA模板题,首先找一下树的根,然后dfs预处理求LCA(u,v) AC代码: 1 #include<iostream> 2 #include<algorithm> 3 #include< 阅读全文
posted @ 2020-01-16 21:16 AaronChang 阅读(173) 评论(0) 推荐(0)