[AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题
1. 题目
2. 读题(需要重点注意的东西)
思路:
贪心 -----> 每次在当前的选法中,选择能选的情况中的最优解
解题思路:
代码实现思路:
按上述思路,中位数为n/2,那么只需要代入公式统计距离之和的最小值即可:res += abs(q[i] - q[n / 2]);
3. 解法
---------------------------------------------------解法---------------------------------------------------
#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;
}
可能存在的问题(所有问题的位置都在上述代码中标注了出来)
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 贪心
6. 总结
贪心思想、绝对值不等式的例题,理解思想并自行推导出公式。