【AT_abc294_g 题解】

题意#

给定一颗 n 个节点的带权无向树。

给出 q 个操作:

  • 1 i w:把第 i 条边的边权变成 w
  • 2 u v:求 uv 简单路径的边权和。

解法#

根据树上差分。

plca(x,y)

uv 简单路径的边权和为 d(u)+d(v)2d(p)

详见 oi-wiki

其中 d(i) 表示 ir 边权和的差分数组,r 为根节点。

本题需要支持修改操作,我们可以用树状数组/线段树来维护 d

具体的,对于无向边 (u,v) uv 的儿子,则我们发现只对以 u 为根的这颗子树的 d 有影响。

那么我们可以先求出 dfs 序,然后就转换成了区间加,单点查询,可以用树状数组/线段树维护。

时间复杂度:O(nlogn+qlogn)

代码。

posted @   hcywoi  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示
主题色彩