原题链接:https://www.acwing.com/problem/content/106/
题目分析
一维数轴上有n个定点,现在我们需要找一个位置使得其他点坐标与该点差的绝对值之和最小
显然可以用初中学过的绝对值不等式
复习绝对值不等式
|x-x1|+|x-x2|+…… x取中位数(奇数个)或者中位数两个数之间(偶数个)包含这两个点
c++代码
代码非常简单
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
int q[N];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);
sort(q, q + n);
int res = 0;
for (int i = 0; i < n; i ++ ) res += abs(q[i] - q[n / 2]);
printf("%d\n", res);
return 0;
}