1007C步行(树上贡献统计)

http://cplusoj.com/d/senior/p/SS241007C

首先可以发现每条边的贡献为 2 min ⁡ ( w x , S − w x ) 2\min(w_x,S-w_x) 2min(wx,Swx) x x x 为下端的点

考虑现在断一条边,连一条边。我们先不考虑断边,只连边。那么这是一个基环树,不在环上的贡献使容易算的

对于这个环,我们要先找出它的 w w w 变化量。

在这里插入图片描述

  • 对于绿色区域内一点 p p p w p w_p wp 变为 w y − w p w_y-w_p wywp
  • 对于黄色区域内一点 p p p w p w_p wp 变为 w p − w y w_p-w_y wpwy
  • 对于蓝色区域内一点 p p p w p w_p wp 变为 w p + w y w_p+w_y wp+wy

然后那个 min ⁡ \min min 取左还是取右在链上显然满足单调性,直接树上倍增二分即可。处理的时候可以拆成 min ⁡ ( S − 2 w , 0 ) + w \min(S-2w,0)+w min(S2w,0)+w 更方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值