Loading

[ARC147C] Min Diff Sum

思路

\[ \begin{gather*} \sum_{i = 1}^{N - 1} \sum_{j = i + 1}^{N} \lvert x_j - x_i \rvert \\ \end{gather*} \]

发现这不就是点对距离之和吗?

对贡献柿子进行一些处理
提取出 \(x_i\) 放到 \(p\) 中升序排序, 记 \(p\) 的前缀和为 \(\textrm{pre}\), 记 \(p\) 的后缀和为 \(\text{suf}\)

\[ \begin{align*} & \sum_{i = 1}^{N - 1} \sum_{j = i + 1}^{N} \lvert x_j - x_i \rvert \\ =& \frac{\sum_{i = 1}^{N} (i - 1) p_i - \textrm{pre}_{i - 1} + \textrm{suf}_{i + 1} - (n - i)p_i}{2} \\ =& \frac{\sum_{i = 1}^{N} (i - 1) p_i - (n - i)p_i + (i - 1)p_i - (n - i)p_i}{2} \\ =& \frac{\sum_{i = 1}^{N} (2i - 2) p_i - (2n - 2i)p_i}{2} \\ =& \frac{\sum_{i = 1}^{N} (4i - 2n - 2) p_i}{2} \\ =& \sum_{i = 1}^{N} (2i - n - 1) p_i \\ \end{align*} \]

不难发现因为 \(2i - n - 1\) 这个系数对于 \(i = \{1, n\}, \{2, n - 1\}, \{3, n - 2\}, \cdots\) 都是相反数, 所以贡献可以进一步变为

\[\sum_{i = 1}^{\left\lfloor\frac{n}{2}\right\rfloor} (n - 2i + 1) (a_{n - i + 1} - a_i) \]

场上不会了
但是实际上并不困难
不难发现我们应该尽量选择两个靠近的位置, 然后把两段区间删了, 这是显然的, 但是我并不会证明
其实硬要证也行, 不难发现选择两个位置切割之后, 应该包含所有区间\((\)除了这俩\()\), 简单来讲就是我们应该找到最大的左端点和最小的右端点

posted @ 2025-05-21 15:56  Yorg  阅读(17)  评论(0)    收藏  举报