zoukankan      html  css  js  c++  java
  • 洛谷P1632 点的移动 题解 枚举

    题目链接:https://www.luogu.com.cn/problem/P1632

    题目大意:
    求平面上 (1)(2 cdots n) 个点的曼哈顿距离的最小值。

    解题思路:
    枚举,我们假设 (m) 个点的最小曼哈顿距离,我们假设汇集的点是 ((x,y)) ,则 (x) 必然可以选择 (n) 个点的横坐标中的一个, (y) 也可以选 (n) 个点的纵坐标中的一个。
    所以我们枚举 (x)(y) 然后求距离即可。
    实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 55;
    int n, x[maxn], y[maxn], dist[maxn], ans[maxn];
    int main() {
        cin >> n;
        for (int i = 0; i < n; i ++) cin >> x[i] >> y[i];
        for (int i = 0; i < n; i ++) ans[i] = -1;
        for (int i = 0; i < n; i ++) {
            for (int j = 0; j < n; j ++) {
                int xx = x[i];
                int yy = y[j];
                for (int k = 0; k < n; k ++) {
                    dist[k] = abs(x[k] - xx) + abs(y[k] - yy);
                }
                sort(dist, dist+n);
                int cnt = 0;
                for (int k = 0; k < n; k ++) {
                    cnt += dist[k];
                    if (ans[k] == -1 || ans[k] > cnt) ans[k] = cnt;
                }
            }
        }
        for (int i = 0; i < n; i ++)
            printf("%d
    ", ans[i]);
        return 0;
    }
    
  • 相关阅读:
    学生排序,使用三层优先级
    利用类计算学生成绩和排序
    join()函数
    对象
    015_eclipse开发环境的使用
    013_运算符_算术
    012_变量
    011_jdk7新特性
    010_类型提升问题
    008_浮点数误差问题
  • 原文地址:https://www.cnblogs.com/quanjun/p/12242781.html
Copyright © 2011-2022 走看看