专心OI - 找祖先
题目链接:https://www.luogu.org/problem/P5002
题解:
假设我们找到点u
1.这些点对不跨越u,即其中有一个点一定是u
\[ans1 = 2 \times size\left[ u \right] - 1\]
2.这些点不跨越u
u的所有子树的大小相乘即是答案。w为子树个数。
\[ans2 = \sum\limits_{i = 1}^w {\sum\limits_{j = 1}^w {size\left[ {son\left[ i \right]} \right]} } \times size\left[ {son\left[ j \right]} \right] - \sum\nolimits_{i = 1}^w {size\left[ {son\left[ i \right]} \right]} \]
我们发现并不需要枚举两个儿子,另一个可由父亲的大小推出
简化上式可得
\[ans2 = {\left( {size\left[ u \right] - 1} \right)^2} - \sum\limits_{i = 1}^w {size\left[ {son\left[ i \right]} \right]_{}^2} \]
相加得解
\[ans = size{\left[ u \right]^2} - \sum\limits_{i = 1}^w {size\left[ {son\left[ i \right]} \right]_{}^2} \]
然后随便做。。。