货仓选址
这道题货仓的位置就是中位数这样才能保证距离之和最小
这道题虽然不难但是这里面推导的一个公式很重要!
∑
i
=
1
n
∣
A
i
−
p
o
s
∣
\sum_{i=1}^{n}|A_i - pos|
∑i=1n∣Ai−pos∣
要使这个式子值最小,
p
o
s
pos
pos就得是序列的中位数
还会有题会得出这个式子
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, arr[100005];
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
sort(arr, arr + n);
int pos;
if (n % 2) pos = arr[n / 2];
else pos = (arr[n / 2] + arr[n / 2 - 1]) / 2;
int sum = 0;
for (int i = 0; i < n; i++) {
sum += abs(arr[i] - pos);
}
cout << sum << endl;
return 0;
}