为什么我们在CSES的棒长度问题(下面提到的问题)中比较数组的数量和中值,而不是平均值



有n个具有一定长度的棒。你的任务是修改棍子,使每个棍子都有相同的长度。

你可以加长或缩短每根棍子。两个操作的成本都是x,其中x是新长度和原始长度之间的差值。

最低总成本是多少?

输入:
第一个输入行包含一个整数n:棒的数量。然后有n个整数:p1,p2,…,pn:棒的长度。

输出:
打印一个整数:最小总成本。

示例:

输入:
10
576256620 793841203 607061968 362964043 698782696 775664590 69510254 711292185 317067848 711901928

输出:
1758621869

我的想法是,如果我们用所有数字的值减去这些数字的平均值(或平均值+1(,并将它们相加,我们就会得到答案。但事实证明,我们需要取中位数
有人能解释为什么我们通过中位数得到答案吗?

作为一个简单的例子,考虑列表[a,b,c],它是排序的。

  1. 它们的中位数=b。总成本=(b-a) + (b-b) + (c-b)=c-a
  2. 它们的平均值=(a+b+c)/3。设为x。总成本=(x-a) + abs(b-x) + (c-x)如果计算(x-a)+(c-x),它的计算结果将为c-a。因此,总成本变成(c-a) + abs(b-x),它将始终是>= (c-a)。因此,中位数是一个更好的参数

最新更新