acwing 104.货仓选址(c++)

这是一道关于在数轴上寻找最佳货仓位置的问题,目标是最小化货仓到所有商店距离之和。给定商店坐标后,通过算法找到使总距离最小的货仓位置,样例输入为4个商店的坐标,输出为最小距离和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一条数轴上有 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值