洛谷 P5871

image

令第 \(i\) 个人有 \(a_i\) 枚金币,\(s_i = a_1 + a_2 \dots + a_2\)\(k\) 表示最后每个人的金币数。

设第 \(1\) 个人给了第 \(n\) 个人 \(x\) 枚金币,则第 \(i\) 个人与第 \(i+ 1\) 个人直接按转手的金币数为 \(|s_i - x - ik|\),令 \(b_i = s_i - ik\)。答案为 \(|x| + |b_1 - x| + |b_2 - x| + \dots + |b_{n - 1} - x|\)。将 \(b_0\) 视为 \(x\),就是初中一年级学的东西了,排序后选择中位数即可。

时间复杂度:\(O(n \log n)\)

posted @ 2025-11-07 21:05  xiehanrui0817  阅读(3)  评论(0)    收藏  举报