[ABC133F] Colorful Tree

给你一颗树,每条边有颜色、边权,你需要处理一些询问,每个询问给出 \(x,y,u,v\) 您需要求出假定所有颜色为 \(x\) 的边边权全部变成 \(y\) 后,\(u\)\(v\) 之间的距离。询问之间互相独立。


先拆贡献变成询问一个点到根的距离。

考虑把颜色为 \(x\) 的边边权改为 \(y\) 后距离会怎样变化

\( d'=d-s_x+yc_x \)

其中 \(s_x\) 表示颜色为 \(x\) 的边贡献的长度和,\(c_x\) 表示颜色为 \(x\) 的边的个数。

那么我们此时用持久化数组维护 \(s\), \(c\) 这题就已经做完了。

但是如果把询问离线下来就可以 \(O(n+q)\) 地处理询问,瓶颈在于求 LCA 是 \(O(n\log n)\) 的。

posted @ 2025-02-16 20:48  CuteNess  阅读(11)  评论(0)    收藏  举报