码迷,mamicode.com
首页 > 其他好文 > 详细

一些有意思的题

时间:2020-07-03 23:28:35      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:提交   有一个   维护   地方   方法   math   lca   使用   意思   

一些有意思,但是没地方提交的题。

1

每个点有一个颜色,求树上所有颜色不同点对的距离和。

做法一

不同点对的距离和 \(=\) 总距离和 \(-\) 相同颜色的点对距离和。

对每个颜色建立虚树,然后算就得了。

做法二

首先同样进行第一步转化。

考虑使用线段树合并维护一个子树中每种颜色有多少个,深度之和为多少。

到一个结点处理两件事情:

  • 不同子树之间的结点距离和,可以发现这些点的lca都是当前点,所以距离可算。
  • 子树中的点到当前点的距离和。

可能这个方法会难写一些?

一些有意思的题

标签:提交   有一个   维护   地方   方法   math   lca   使用   意思   

原文地址:https://www.cnblogs.com/skiceanAKacniu/p/13233047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!