首页 > 其他分享 >CF1824B1

CF1824B1

时间:2023-08-25 09:11:55浏览次数:54  
标签:siz sum 子树里 答案 情况 CF1824B1 节点

原题

翻译

这题不算难,但我想错了

当\(k = 1\)时,答案就是关键点;当\(k = 3\)时,答案就是三个节点组成路径的中间点(我想成了是一条路径),因此对于这两种情况我们只需要输出1即可

而当\(k = 2\)时答案才是一条路径,因此我们考虑怎么计算\(k = 2\)的情况

我们反向思考,考虑对于每个点,看当他作为好点(以下设这个点为\(x\))时2个关键节点可以怎么选

我们发现答案有两种情况:

  • 两个节点都在以\(x\)为根的子树里,并且他们不在同一个\(x\)的儿子的子树里

  • 一个节点在以\(x\)为根的子树里,但另一个节点在\(x\)子树外

我们只需要对这两种情况分别计算贡献即可

定义\(siz_i\)表示\(x\)点第\(i\)个儿子子树大小,\(s_i\)表示\(i\)点儿子个数,则对于点\(x\),第一种情况答案为

\[\sum_{i=1}^{s_x-1}{\sum_{j=i+1}^{s_x}{siz_i siz_j}} = \frac{(\sum_{i=1}^{s_x}{siz_i})^2-\sum_{i=1}^{s_x}{siz_i^2}}{2} \]

别忘记加上第二种情况即可

最终复杂度\(O(n)\)

标签:siz,sum,子树里,答案,情况,CF1824B1,节点
From: https://www.cnblogs.com/fox-konata/p/17655984.html

相关文章