货仓选址
对于a,b两点
L=|x-a|+|x-b|,最优解一定在a和b之间
L>=b-a
f(x)=|x1-x|+|x2-x|+……+|xn-x|
=(|x1-x|+|xn-x|)+(|x2-x|+|xn-1-x|)+……
≥xn-x1+xn-1-x2+……
最小方案为:
为偶数个:x取在中间两个数之间
为奇数个:x取在中位数
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int ans=0;
sort(a,a+n);
for(int i=0;i<n;i++){
ans+=abs(a[n/2]-a[i]);
}
printf("%d",ans);
}