1 条题解
-
1
拯救食堂!
题意
学校里有 n 个教室,第 i 个教室的坐标为 (x_i, y_i) 。
现在要把送餐车放在其中一个教室里。若送餐车放在坐标 (x, y) 的教室,则第 i 个教室到送餐车的距离为曼哈顿距离:
求所有教室到送餐车的距离之和的最小值。
思路
因为送餐车必须放在某一个已有教室中,所以可以直接枚举每一个教室作为送餐车位置,计算其他所有教室到它的曼哈顿距离总和,取最小值。
本题 n <= 1000 ,所以 O(n^2) 可以通过。
复杂度
时间复杂度: O(n^2)
空间复杂度: O(n)
参考代码:#include <bits/stdc++.h> using namespace std; int x[1010],y[1010]; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { cin >> x[i] >> y[i]; } long long ans = 1000000000000000; for (int i = 0; i < n; i++) { long long sum = 0; for (int j = 0; j < n; j++) { sum += abs(x[i] - x[j]) + abs(y[i] - y[j]); } ans = min(ans, sum); } cout << ans << '\n'; return 0; }求赞,谢谢!
信息
- ID
- 2935
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 223
- 已通过
- 36
- 上传者