题目大意:给你一棵树,和$3$个节点,要你找到树上的一个点,使得三个点到这个点的距离和最小,并输出个距离题解:令三个点为$a,b,c$,$i,j$两点的$lca$为$lca_{i,j}$,第$i$个点的深度为$depth_i$,$i,j$两点之间的距离为$d_{i,j}$。所以会发现$lca_{a, ...
分类:
其他好文 时间:
2018-08-21 19:02:55
阅读次数:
188
传送门 题目 Input Output 分析 看到这个题不难想到倍增LCA,然后我们考虑如何计算。我们分别求出3个点中任意两点的LCA,为了走的步数最少所以肯定是先有两个点相遇然后另一个点走的它们相遇的点,至于最后的距离自己画一画就知道啦。 代码 ...
分类:
其他好文 时间:
2018-06-20 21:36:01
阅读次数:
189
"友链" Description Examples input output Solution 两两算出LCA,有两个LCA是相同的,选择另一个作为答案 这道题似乎卡常数 cpp include include include define MAXN 500005 int head[MAXN]; i ...
分类:
其他好文 时间:
2018-03-11 17:23:27
阅读次数:
235
【传送门:BZOJ1787】 简要题意: 给出有n个点的图,n-1条无向边,保证任意两点之间能互相到达,每条边的权值为1,给出m个询问,每个询问输入x,y,z,求出一个点使得三个点到这个点的距离和最短,输出这个点的编号和最短距离和 题解: 终于算是做了一道较大数据结构的题了 n个点,n-1条边其实就 ...
分类:
其他好文 时间:
2017-12-28 23:24:24
阅读次数:
174
设自己在x点,小可可在y点,小可可的朋友在z点,那么设xy为x和y的lca,xz为x和z的lca,yz为y和z的lca 那么汇聚点要么在xy要么在yz要么在xz 三个进行比较即可 代码如下 ...
分类:
其他好文 时间:
2017-11-05 16:35:56
阅读次数:
132
题意很明确 要求三个数的LCA 那么该怎么求呢? 初见时考虑的是去暴力求两两LCA 然后发现需要讨论..思路混乱无奈去找了Hzwer的题解 此题有一个神奇的结论 三个数两两LCA必有两个重复 那么另外一个就是答案 比如这张图 设x,y,z是三个点 那么显然可以看出来,x和y与z的LCA都是点b 如果 ...
分类:
其他好文 时间:
2017-09-28 14:45:05
阅读次数:
227
Description Input Output Sample Input 6 41 22 32 44 55 64 5 66 3 12 4 46 6 6 Sample Input Sample Input 5 22 54 16 0 HINT 【解析】 三个点两两的lca一共有3个,其中两个一样的,那 ...
分类:
其他好文 时间:
2017-05-07 10:09:22
阅读次数:
175
传送门 可以看出,三个点两两之间的lca会有一对相同,而另一个lca就是聚集点。 然后搞搞就可以求出距离了。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #define MAXN 1000001 5 6 ...
分类:
其他好文 时间:
2017-05-04 19:57:06
阅读次数:
167
题目描述 输入 输出 样例输入 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 样例输出 5 2 2 5 4 1 6 0 题解 倍增LCA 首先有集合点必定在三点中两个点的LCA处,大概画一下就看出来了。 然后有x到y的距离为deep[x]+deep[ ...
分类:
其他好文 时间:
2017-03-27 13:05:01
阅读次数:
151
给定一棵大小为n的树,有m组询问,每组询问给三个点x,y,z,求到这三个点距离和最小的点及最小距离和. ...
分类:
其他好文 时间:
2016-10-29 19:18:31
阅读次数:
182