货仓选址中位数证明
Posted rstz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了货仓选址中位数证明相关的知识,希望对你有一定的参考价值。
假设货仓左边所有点到仓库的距离是p, 右边是q, 总距离p+q, 由题可知,要让总距离最小,当仓库向左移动 p – x, 而 但是q会增加n?x,所以说当为仓库中位数的时候,p+qp+q最小。还是同样的一句话,画图理解很重要。
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 const int N = 1e5 + 5; 5 int a[N]; 6 int main(){ 7 int n; 8 cin >> n; 9 for(int i = 1; i <= n; ++ i) 10 cin >> a[i]; 11 12 sort(a+1, a+1+n); 13 int pos = 0; 14 if(n&1) pos = a[(n+1)/2]; 15 else pos = a[n/2 + 1]; 16 int ans = 0; 17 for(int i = 1; i <= n; ++ i) 18 ans += abs(a[i] - pos); 19 cout << ans << endl; 20 return 0; 21 }
以上是关于货仓选址中位数证明的主要内容,如果未能解决你的问题,请参考以下文章
关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)