zoukankan      html  css  js  c++  java
  • hihocoder 1931 最短管道距离

    描述

    在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN)。  

    现在H国要修建一条平行于X轴的天然气主管道。这条管道非常长,可以认为是一条平行于X轴的直线。  

    小Ho想知道如何修建这条管道,可以使N座城市到管道的垂直距离之和最小。请你求出这个最小的距离之和。

    输入

    第一行包含一个整数N。  

    以下N行每行包含两个整数Xi, Yi。  

    1 <= N <= 100000  

    0 <= Xi, Yi <= 1000000  

    输出

    一个整数,代表最小的距离之和。

    样例输入

    4  
    0 0  
    0 100  
    100 0  
    100 100

    样例输出

    200

    直接排序在中点位置,对于偶数情况,中间两个点都可以,答案相同,因为要求是整数。也可以考虑每次求一个最大y和最小y之间的差,都加起来,因为管道肯定在他俩之间。
    代码:
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    typedef long long ll;
    int a[100000];
    int main() {
        int n,x;
        ll sum = 0;
        scanf("%d",&n);
        for(int i = 0;i < n;i ++) {
            scanf("%d%d",&x,&a[i]);
        }
        sort(a,a + n);
        for(int i = 0;i < n;i ++) {
            sum += abs(a[i] - a[n / 2]);
        }
        printf("%lld",sum);
    }
  • 相关阅读:
    第七次——例行报告
    贪吃蛇功能说明书(初稿)
    第六周——例行报告
    第五周——例行报告
    贪吃蛇界面设计初稿
    贪吃蛇需求分析
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    Python基础综合练习修改
  • 原文地址:https://www.cnblogs.com/8023spz/p/10799743.html
Copyright © 2011-2022 走看看