首页 > TAG信息列表 > Ahoi2008
P4281 [AHOI2008]紧急集合 / 聚会
题目描述 欢乐岛上有个非常好玩的游戏,叫做“紧急集合”。在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一个点到另一个点要花费一个游戏币。 参加游戏的人三人一组,开始的时候,所有人员均任意分散在各P4281 [AHOI2008]紧急集合 / 聚会
题意描述: 欢乐岛上有个非常好玩的游戏,叫做“紧急集合”。在岛上分散有 \(n\) 个等待点,有 \(n−1\) 条道路连接着它们,每一条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一个点到另一个点要花费一个游戏币。 参加游戏的人三人一组,开始的时候,所有人员均任洛谷P4281(AHOI2008)-紧急集合(LCA)
题意: 在一颗 n 个节点的树上,有 q 个询问,每次询问给出x 、 y 、 z 三个节点,要求在树上找到一个点 ppp,使得 distance=dist(x,p)+dist(y,p)+dist(z,p)distance = dist(x,p) + dist(y,p) + dist(z,p)distance=dist(x,p)+dist(y,p)+dist(z,p) 取得最小值; 思路: 最佳集合点 p只能BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]
location。 求到树上三点距离和最短的点及此距离。 这个不还是分类讨论题么,分两类大情况,如下图。 于是乎发现三个点对的lca中较深的那个lca是答案点。距离就是两两点对距离加起来除以2即可。这个通过画图真的很好理解。毫无技术含量。 1 #include<iostream> 2 #include<cstdio>P4281 [AHOI2008]紧急集合 / 聚会 树链剖分
m个询问 每个询问有三个节点 求出 一个节点 使得这三个节点到该结点的距离之和最小 输出该节点和距离之和 一开始用线段树给三条边均加1 最大值的节点就是答案 但是T了 可以优化log 观察三个节点的lca可发现 如果三个lca都相同 那么就是该节点 如果两个相BZOJ1832: [AHOI2008]聚会(LCA)
题目: 1832: [AHOI2008]聚会 解析: 偶尔做做水题挺爽的 两两之间先求出LCA,发现至少有两个LCA是相同的,这个重复LCA也是深度最浅的那个,那我们就选择那个不重复的LCA,因为若选这个重复的LCA的话,这个重复的LCA到另一个LCA的路径会走两遍,反之只会走一遍 三点间的距离就是 \(dis[x] + dis[yBZOJ1787/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,luogu P4281 [AHOI2008]紧急集合 / 聚会
背景: 发现树剖还有好多题没有做。 题目传送门: https://www.luogu.org/problemnew/show/P4281 题意: 多组询问,在树上找一个点点,使给定的三个点到这个点之间的距离和最小。 思路: