题解 P7288 「EZEC-5」树木的愤怒

Description

删除两条边,将树分成三个连通块 A , B , C A,B,C A,B,C,贡献为连通块点权和之积

删去一条边,问再删去任意一条边后的贡献和

Solution

考虑预处理出所有答案

先将边下放到子节点

O ( n 2 ) O(n^2) O(n2) 做法:

枚举删除的任意两条边,算出贡献,累加到两条边上

考虑优化

发现删去一条边后,再删第二条边时,对于很多情况,都会有一个连通块不变,考虑剩下连通块的贡献一起算,再乘上这个连通块的贡献

分类讨论

定义 s u s_u su 为子树 u u u 的点权和

  • 删的第二条边在子树内

在这里插入图片描述

贡献为

( s 1 − s u ) ∑ v ∈ s o n u ( s u − s v ) s v = ( s 1 − s u ) ∑ v ∈ s o n u ( s u s v − s v 2 ) = ( s 1 − s u ) ( s u ∑ v ∈ s o n u s v − ∑ v ∈ s o n u s v 2 ) ) (s_1-s_u)\sum_{v\in son_u}(s_u-s_v)s_v\\ =(s_1-s_u)\sum_{v\in son_u}(s_us_v-s_v^2)\\ =(s_1-s_u)(s_u\sum_{v\in son_u}s_v-\sum_{v\in son_u}s_v^2)) (s1su)vsonu(susv)sv=(s1su)vsonu(susvsv2)=(s1su)(suvsonusvvsonusv2))

s s s 做子树和,平方的子树和, O ( n ) O(n) O(n) 统计贡献

  • 删的第二条边在到根的路径上

在这里插入图片描述
贡献为

s u ∑ v ∈ r o a d 1 , u ( s 1 − s v ) ( s v − s u ) = s u ∑ v ∈ r o a d 1 , u ( s 1 s v − s 1 s u − s v 2 + s u s v ) = s u ( s 1 ∑ v ∈ r o a d 1 , u s v − ∑ v ∈ r o a d 1 , u s 1 s u − ∑ v ∈ r o a d 1 , u s v 2 + s u ∑ v ∈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值