2024.10.28 test
A
一棵树,对于 \((x,y)\),定义 \(joy(x,y)\) 为通过有限个简单路径两两相连,使得 \(x\) 走到 \(y\) 的最短的简单路径长度的最大值。对于所有 \((x,y)\) 求和。
我们至多只会找两个中转点,对于 \(x,y\) 各找一个。
根据经典结论,距离树上某个点最远的点一定是直径两端点中的一个。
所以求出直径两端点,以及每个点到两个端点最远的距离,再排序一下求答案即可。
B
一棵树上 \(q\) 次询问,每次给定小偷和警察所在位置以及其速度,问小偷最多不被抓住的时间。小偷可以在边上或点上被抓住。\(n,q\le 10^5\)。
我们先考虑警察与小偷在一条链上的情形,设小偷距离警察为 \(a\),距离目的地为 \(b\)。
有两种情况,第一种是在路上被抓住,第二种是到目的地等死,两种情况取 \(\min\) 即可。
即答案是 \(\min(\frac{a}{v_1-v_2},\frac{a+b}{v_1})\),当 \(\frac{b}{a+b}\le \frac{v_2}{v_1}\) 这个 \(\min\) 取到后者。
考虑到树上,设警察为根,求出每个点其子树内最深的叶子的距离,小偷的目的地一定是某个叶子。
小偷先往上走,再往叶子走。显然 \(a\) 是单调递减,\(b\) 是单调上升的,可以二分出 \(\min\) 取值的分界点。
贪心地,我们只需要计算分界点处的答案即可。
对于换根的操作,我们只需要求每个点子树内和子树外的最远点距离即可。