题解:P16435 [APIO 2026 中国赛区] 集宝

· · 题解

场外口胡 T1 和 T2 共取得了 \sim65pts,没有人类了。绝望中瞪出了 T3,数据结构好啊。

自然地,将一个点 a_i 视作一个半径为 d_i 圆,把这个圆中的所有点视作 i 颜色点。

引理 I:以 x 为起点,走向离 x 最近的 l 色点 x',然后 x\gets x'l\gets l+1l\le r)。走的总距离即为答案。

证明:给定任意一个合法简单路径,由于在树上,所以一定有一个 c 色点 x' 使得 c-1 色点 xx' 的距离最短。证毕。

于是就得到了一个 \mathcal{O}(n\log n+mq) 的做法(使用 \mathcal{O}(1) LCA)。

注意到 C 性质 l=1,感觉这很差分。发现差分根本做不到:如果令答案为 f(1,r)-f(1,l-1),那么要求圆 l-1 到圆 l 的最短路交点和查询给定的 x 到圆 l 的最短路交点一致(其实如果保证了圆不重合就可以差分了喵,读者自行思考)。

然后你发现一件事情:哪怕 l=1,也不能直接预处理 f(1,r) 的答案,因为起点和圆 1 的交点可能被后续很多圆也覆盖了,出题人太坏了。我们发现,如果保证了所有圆不重合,那么这就是汤题:本质上是因为在圆 2 上的起点确定,而前面的计算是 \mathcal{O}(1) 的(查询 [l,r] 同理,在圆 l+1 上的起点确定)。

于是我们需要考虑把圆重合这个事情解决。

引理 II:树上两个相交圆(定义和文章开头一样)的交还是一个圆。

证明:设圆心 x,yd=dis(x,y) 为两圆心距离。在 xy 的唯一简单路径上,一定存在一点 z(可能在边上),满足:

r_1-dis(z,x)=r_2-dis(z,y)

如果结论成立,则有以 z 为圆心的圆,半径为:

R = \frac{r_1+r_2-d}{2}

此时,zx 的距离为 r_1-R,到 y 的距离为 r_2-R

必要性:交集内的点都在圆 (z, R) 内。

设点 u 是交集内的任意一点,即满足 dis(u,x)\le r_1dis(u, y)\le r_2。点 u 到路径 x\to y 有唯一的最近点,设为 v。则有:

dis(u,x)=dis(u,v)+dis(v,x) dis(u,y)=dis(u,v)+dis(v,y)

由于 zv 都在路径 x\to y 上,对于路径上的任意点 v,都有:

dis(v,z)\le\max(R-(r_1-dis(v,x)),R-(r_2-dis(v, y)))

通过圆 x,y 得:

dis(u,v)+dis(v,x)\le r_1\implies dis(u,v)\le r_1-dis(v,x) dis(u,v)+dis(v,y)\le r_2\implies dis(u,v)\le r_2-dis(v,y)

把他们带进 dis(u,z)=dis(u,v)+dis(v,z)

dis(u,z)\le\min(r_1-dis(v,x)+dis(v,z),r_2-dis(v,y)+dis(v,z))

化简一下:

dis(u,z)\le\min(r_1-dis(z,x),r_2-dis(z,y)) = R

充分性:圆 (z, R) 内的点都在交集内。

设点 u 满足 dis(u,z)\le R。我们需要证明它同时满足到 xy 的距离约束。

对圆 x 有:

dis(u,x)\le dis(u,z)+dis(z,x)

代入 dis(u,z)\le R

dis(u,x)\le R+dis(z,x)

根据 z 的构造,R+dis(z,x)=r_1

dis(u,x)\le r_1

即点 u 在圆 x 内。对于圆 y 同理。

由于 dis(u,z)\le R 是点 u 属于两圆交集的充要条件,因此两圆的交集构成了以 z 为圆心、R 为半径的圆。证毕。

考虑如果我们要依次经过 k,k+1 色圆,一般化地考虑起点 x 三种情况:

  1. 本身就在交上,不动;
  2. k 上,到交圆最短等价到 k + 1 最短;
  3. k+1 上,到交圆最短等价最小代价达到 1 情况。

那么直接到他们的交圆上是不劣的。所以我们就可以做区间合并了!把相离或相切的圆直接算距离,然后变成两个半径为 0 的点进行维护;否则直接合并圆。查询的时候让起点直接合并进去即可。

直接上 \mathcal{O}(1) LCA 和 \mathcal{O}(1) k 级祖先,合并就是超大常数 \mathcal{O}(1),于是套上线段树时间复杂度就是 \mathcal{O}((m+q)\log m) 的。感觉超级好写。