货舱选址如何取最小就是要找中位数,中位数那个点到其他点距离之和最小,我这里定义的是下标为1开始,取中位数时一开始用mid=n/2还运行错误, 运行默认是向下取整,所以(n + 1) / 2才对
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
int a[N];
int main()
{
cin >> n;
for (int i = 1; i <= n; i ++ )
scanf("%d", &a[i]);
sort(a + 1, a + 1 + n);
long long res = 0;
for (int i = 1; i <= n; i ++ )
{
res += abs((long long)a[i] - a[(n + 1) / 2]);
}
cout << res;
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla