首页 > TAG信息列表 > BZOJ1787
BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]
location。 求到树上三点距离和最短的点及此距离。 这个不还是分类讨论题么,分两类大情况,如下图。 于是乎发现三个点对的lca中较深的那个lca是答案点。距离就是两两点对距离加起来除以2即可。这个通过画图真的很好理解。毫无技术含量。 1 #include<iostream> 2 #include<cstdio>BZOJ1787/Luogu4281: [Ahoi2008]Meet 紧急集合
画画图可知,三点\(lca\)必有两相同,\(a,b,c\)距离为\(dis_a + dis_b + dis_c - dis_{lca(a,b)} - dis_{lca(b,c)} - dis_{lca(a,c)}\) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,[2018.12.26]BZOJ1787 [Ahoi2008]Meet 紧急集合
一个结论: 树上任意三点两两之间的LCA必然有两个是相同的。 至于为什么。。。找个规律就好了干嘛那么烦,暂时没找到好的证明。 可以发现答案必然在这两个LCA之一。 发现只出现一次的那个更优。 大致就是因为如果走到重复的那个LCA,它和不重复的LCA之间的路径被多走了一次。而从后者