1 条题解

  • 1
    @ 2026-4-26 13:15:36

    拯救食堂!
    题意
    学校里有 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
    上传者