1 条题解
-
0
把 - 排序,设货仓建在 坐标处, 左侧的商家有 家,右侧的商店有 家。若 ,则每把货仓的选址向右移动 单位距离,距离之和就会变小 。同理,若 ,则货仓的选址向左移动会使距离之和变小。当 时为最优解。
因此货仓应给建在中位数处,即把 排序后,当 为奇数时,货仓建在 处最优;当 为偶数时,货仓建在 或 任何位置处都是最优。
#include <bits/stdc++.h> const int N=100100; int a[N], n, ans; int main() { std::cin>>n; for (int i = 1; i <= n; i ++) std::cin>>a[i]; std::sort(a+1,a+1+n); int sum=a[n/2+1]; for (int i = 1; i <= n; i ++) ans = ans + abs(a[i] - sum); //统计和中位数之间的差 std::cout << ans << std::endl; return 0; }
- 1
信息
- ID
- 108
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 33
- 已通过
- 15
- 上传者