Loading

6.21 CW 模拟赛 T1. 随机说话

前言

在一坨屎一样的机房搞这个真是爽翻天了

思路

首先考虑 \(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\) 的贡献

posted @ 2025-06-23 15:58  Yorg  阅读(10)  评论(0)    收藏  举报