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;
- }
-
相关阅读:
如何在 Java 中实现无向图
游戏开发者应该了解的小游戏变现逻辑
Simplify Calculations with Formulas
Python中list的操作4-3
IDEA断点调试快捷键
使用geopandas输出可视化地图
y149.第八章 Servless和Knative从入门到精通 -- Flow(十三)
Linux C++ OpenVINO 物体检测 Demo
SQL vs NoSQL: 为满足您的业务需求选择正确的数据库模型
splay + 垃圾回收 知识点与例题的简要讲解
-
原文地址:https://blog.csdn.net/lybc2019/article/details/133358826