题解:CF1464F My Beautiful Madness
题意简述
给定一棵
对于点
对于点
对于路径
现在有一个初始为空的可重路径
- 往
S 中加入一条路径P 。 - 从
S 中删除一条路径P 。 - 给定
d ,问是否存在点x ,满足\forall P\in S,dis(x,S)\leq d 。
另一个版本是只有前两种操作,每次后求出
前置结论
下面两个做法都要用到一个结论:
- 对于点集
S ,设u,v\in S 满足dis(u,v)=\displaystyle\max_{x,y\in S}\{dis(x,y)\} ,也就是u,v 是点集S 中距离最远的一对点。那么对于树上任意的点x ,它到点集
解法一
求
对于路径问题,一个思路是将考虑一条路径变成考虑若干关键点。而一条路径只有一个
随便找一个树根,对于点
考虑操作 3 中什么时候存在满足条件的
- 显然
u 满足条件的时候,已经找到满足条件的x 。 - 如果
u 不满足条件,那么存在P\in S ,使得dis(u,S)>d 。 - 如果
P 与T_u 有交,显然P 不能经过u ,所以P\in T_u ,但由于选的是最深的u ,此时必然有dis(lca(P),u)\leq d ,矛盾。 - 如果
P 与T_u 无交,那么对于任意x\in T_u ,x 到P 上任意一点的路径都要经过u ,所以dis(x,P)\geq dis(u,P) ,故不存在满足条件的x 。
所以只需要检验
- 如果
lca(P)\in T_u ,这个上面讨论过了,一定有dis(u,P)\leq d 。 - 如果
lca(P) 在路径(u,v) 上,那么dis(u,P)\leq dis(u,lca(P))\leq dis(u,v)\leq d 。 - 如果
lca(P)\notin T_v ,由于P 和T_v 有交,所以P 经过v ,也有dis(u,P)\leq d 。 - 否则,
lca(P) 和u 没有祖先后代关系,此时有dis(u,P)=dis(u,lca(P)) ,故条件等价于dis(u,lca(P))\leq d 。
可以发现,对于前两种情况,也一定有
对于第一个条件,可以用树状数组维护树上差分解决。
对于第二个条件,实际上是要
树剖求
求
提交记录(st 表和树剖差不多)。
解法二
上面的解法中我们将求
考虑一个特殊情况:所有路径都是单点。此时路径集
现在
设
即在
先证明
- 若
P,Q 中至少一条与子树u 无交(不妨设为P ),那么从x 到P 上任何一点都要经过(u,f) 这条边,所以dis(x,P)\geq dis(x,f) ,矛盾; - 若
P,Q 中至少一条经过u (不妨设为P ),那么显然Q 不经过u ,所以Q 在u 子树内,此时dis(R,Q)=dis(f,Q)>dis(u,Q)\geq dis(P,Q) ,矛盾。 - 对于下面的几种情况,
P,Q 都在u 子树内,所以dis(P,R)=dis(lca(P),f),dis(Q,R)=dis(lca(Q),f) 。方便起见,记p=lca(P),q=lca(Q) 。- 若
p,q 存在祖先后代关系(不妨设p 是祖先),那么有dis(f,q)>dis(p,q)\geq dis(P,Q) ,矛盾; - 当
p,q 不存在祖先后代关系时,有dis(P,Q)=dis(p,q) 。- 若
P,Q 中有一个与路径(x,u) 有交(不妨设为P ),那么Q 肯定与(x,u) 无交(否则会变成情况 4),那么此时q 为x 的后代或者没有祖先后代关系,所以有dis(x,Q)=dis(x,q) ,且dis(x,P)\leq dis(x,p)<dis(x,f) 。- 这时候考察点
x 和点集{f,p,q} ,由dis(P,Q)\geq dis(P,R),dis(Q,R) ,得dis(p,q)\geq dis(p,f),dis(q,f) 。 - 那么由点到点集的最远距离的结论,有
\max\{dis(x,p),dis(x,q)\}\geq dis(x,f) ,这与\max\{dis(x,P),dis(x,Q)\}\geq dis(x,R) 矛盾。
- 这时候考察点
- 若
P,Q 均和(x,u) 无交,那么和上面类似有dis(x,P)=dis(x,p),dis(x,Q)=dis(x,q) ,会导出一样的矛盾。
- 若
- 若
上面的讨论覆盖了所有情况,故这部分得证。
对于
剩下的问题就是要维护最远的
证明也差不多。所以可以类似线段树维护点集直径用线段树维护路径集直径。
用 st 表求
求
提交记录。