前言
在一坨屎一样的机房搞这个真是爽翻天了
思路
首先考虑 \(a_x, a_y\) 合并, 其贡献为
\[a_xa_y(a_x+a_y)
\]
考虑对其中一项进行拆分之后的结果, 不妨令 \(a_x = a'_{p_1} + a'_{p_2} + \cdots a'_{p_k}\)
\[\begin{align*}
& \left(a'_{p_1} + \sum_{i = 2}^{k} a'_{p_i}\right)a_y\left(a'_{p_1} + \sum_{i = 2}^{k} a'_{p_i} + a_y\right) \\
=& a'_{p_1}a_y(a'_{p_1} + a_y) + \sum_{i = 2}^{k} a'_{p_i}a_y\left(\sum_{i = 2}^{k} a'_{p_i} + a_y\right) + 2a'_{p_1}\left(\sum_{i = 2}^{k} a'_{p_i}\right)a_y
\end{align*}
\]
不难发现第一次拆分产生了 \(a'_{p_1}a_y(a'_{p_1} + a_y)\) 的产物和 \(\displaystyle 2a'_{p_1}\left(\sum_{i = 2}^{k} a'_{p_i}\right)a_y\) 的废料, 留下了一个子问题
因此最终拆分到最小的结果就是
\[\begin{align*}
& \sum_{i = 1}^{k} \left( a'_{p_i}a_y(a'_{p_i} + a_y) + 2a_y\sum_{j = i + 1}^{k} a'_{p_i}a'_{p_j}\right) \\
=& \sum_{i = 1}^{k} a'_{p_i}a_y(a'_{p_i} + a_y) + \sum_{\{x, y\}} 2a_ya'_{p_x}a'_{p_y}
\end{align*}
\]
在这个基础上我们把 \(a_y\) 也拆开, 不妨令 \(a_y = a'_{q_1} + a'_{q_2} + \cdots a'_{q_h}\)
\[\begin{align*}
& \sum_{i = 1}^{k} a'_{p_i}a_y(a'_{p_i} + a_y) + \sum_{\{x, y\}} 2a_ya'_{p_x}a'_{p_y} \\
=& \sum_{i = 1}^{k} \left(\sum_{u = 1}^{h} a'_{q_u}a'_{p_i} (a'_{q_u} + a'_{p_i}) + \sum_{\{u, v\}} 2a'_{p_i}a'_{q_u}a'_{q_v}\right)
+
\sum_{\{x, y\}} 2a'_{p_x}a'_{p_y} \sum_{i = 1}^{h} a'_{q_i} \\
=& \sum_{\{x, y\}} a'_{q_x}a'_{p_y}(a'_{q_x} + a'_{p_y}) + \sum_{\{x, y, z\}} 2a'_{p_x}a'_{q_y}a'_{q_z} + \sum_{\{x, y, z\}} 2a'_{p_x}a'_{p_y}a'_{q_z}
\end{align*}
\]
发现合并时贡献等价于
两边包含的组合贡献 \((1)\) \(+\) 左边选两个右边选一个组成贡献 \((2)\) \(+\) 左边选一个右边选两个组成贡献 \((2)\) \(^{[1]}\)
我们简单拆下贡献, 把组合贡献 \((1), (2)\) 的出现次数找出来
这里需要引入图论表述合并过程, 发现 \(2n - 1\) 个点合并 \(n - 1\) 次, 产生 \(2(n - 1)\) 条边, 所以是一棵树
不难发现任意贡献 \((1)\) 只在其 \(\rm{LCA}\) 处出现, 贡献 \((2)\) 同理
因此任意贡献 \((1)\) 和贡献 \((2)\) 都唯一出现一次, 不管这棵树的形态如何, 总贡献一定
总结
不管在哪或者在干嘛, 你这个利用率有点极端了
本质上是按序把一个节点的贡献拆开之后的拆贡献
合并 + 继承问题, 往往可以用图论转化
\([1]:\) 其中贡献 \((1)\) 表示形如 \(a'_{x} a'_{y} (a'_{x} + a'_{y})\) 的贡献, 贡献 \((2)\) 表示形如 \(2a'_xa'_ya'_z\) 的贡献