在一条数轴上有 N 家商店,它们的坐标分别为 A1∼AN。
现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。
为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。
输入格式
第一行输入整数 N。
第二行 N 个整数 A1∼AN。
输出格式
输出一个整数,表示距离之和的最小值。
数据范围
1≤N≤100000,
0≤Ai≤40000
输入样例:
4
6 2 9 1
输出样例:
12
/*在一个数轴上|a-x|+|b-x|>=|a-b|
当x在a,b正中间,取等号,即a,b到x距离之和最小
这个题是求多个点到一个点距离之和的最小值
可以俩俩配对,即a0与an-1配对,a2与an-2配对,以此类推
考虑最后中间单个还是双个,即n奇偶问题
当n为奇数时,最后只剩下一个,如果n为偶数个,最后正好俩
由于每次要在中间才能取到最小值
综上,即x为n个数的中位数的时候距离和取最小
关于求中位数,先将数据递增排序,当n为奇数个,中位数为中间位置的数,n为偶数时,中位数为中间两个数的平均值
由于int型自动取整,所以只需要下标为n/2即可
则将x等于中位数带入|a0-x|+|a1-x|+....+|an-1-x|
还有一个就是关于abs库函数的用法,作用是对int型取绝对值,头文件为algorithm
*/
#include