这道题目只涉及距离最短,没有考虑配送路径的问题,所以不要想多。最短距离的数学表达式可以写出来,实际上就是求这个距离的最小值。一维问题是曼哈顿距离,求这个最小值用的方法是绝对值不等式,建议先从两个站点入手找思路,然后扩展到三个,四个,最后得出的一般思路是第一个站点和最后一个站点配对,第二个站点和倒数第二个站点配对。。。假如总共有偶数个站点,那么配送站建在中新两个点中间均可以,如果有奇数个站点,那么配送站放在中位数上,这样由绝对值不等式,这样的距离总是最小的。
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100000+5;
int nums[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>nums[i];
}
sort(nums,nums+n);
int res = 0;
for(int i=0;i<n/2;i++) res+= nums[n-1-i] - nums[i];
cout<<res<<endl;
}