0501 货仓选址 【中位数 距离和的最小值】
描述
在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。
输入格式
第一行一个整数N,第二行N个整数A[1]~A[N]。
输出格式
一个整数,表示距离之和的最小值。
样例输入
4
6 2 9 1
样例输出
12
数据范围与约定
对于100%的数据: N<=100000, A[i]<=1000000
Contest Hunter - 信息学自助比赛平台
问题:x=?,求|A1-x|+ |A2-x|+…+|An-x|最小值。
思路:将A[0]~A[N-1]排序,设货仓建在x坐标处,x 的左侧商店有 P 家,右侧Q 家,若PQ,则货仓向左移动时总距离和变小,当 P=Q 时为最优解。
因此,货仓应该建在中位数处,当N为奇数时,建在A[N/2]处;当 N为偶数时,建在A[(N-1)/2]~A[N/2]之间(包括端点)的任何位置都是。
- #include
- using namespace std;
- const int N=1e5+5;
- int n,a[N],m;
- int main()
- {
- cin>>n;
- for(int i=0;i
>a[i]; - sort(a,a+n);
- int ans=0;
- m=a[n/2];
- for(int i=0;i
- ans+=abs(m-a[i]);
- cout<
- return 0;
- }
-
相关阅读:
python[sys模块使用]:配置subprocessing实现后台调用python函数,并传递次数
Linux安装单机PostgreSQL15.4
代码随想录算法训练营第四十三天| LeetCode1049. 最后一块石头的重量 II、LeetCode494. 目标和、LeetCode474. 一和零
[Linux系统编程]_网络编程(五)
Ubtuntu 安装中州(rime)输入法
acwing算法基础之基础算法--高精度乘法算法
ST-Link v2 刷写 GNUK,年轻人的第一个 OpenPGP 智能卡!
前端开发各种loading效果【loading图的顺序对应代码顺序】
Selenium自动化测试框架
【附源码】计算机毕业设计SSM手机维修服务系统
-
原文地址:https://blog.csdn.net/lybc2019/article/details/133358826