算法1
思路:|A1-c|+|A2-c|+…+|An-c|求最小值
转化成(|Ai-c|+|A1+c|)+(|A2-c|+|An-1 +c|)+....+A中
组成两点之间建立一个仓库,最后每一组均取最小值,此时整个整式取最小值
C++ 代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100010;
typedef long long LL;
int n;
int x[N];
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&x[i]);
sort(x,x+n);
int c=x[n/2];//中点
LL res=0;
for(int i=0;i<n;i++)res+=abs(x[i]-c);//遍历一下每个店到中点的距离
printf("%lld\n",res);
return 0;
}