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);
    }
  • 相关阅读:
    CSS
    javaScript高级:BOM和DOM
    Layui在弹出层实现轮播图效果
    SQL
    jQuery基础
    清除重复值:distinct
    tomcat的server.xml中进行配置来实现访问本地电脑的图片
    jQuery高级
    javascript基础:ECMAScript
    设计模式六大原则【设计模式学习开篇】
  • 原文地址:https://www.cnblogs.com/8023spz/p/10799743.html
Copyright © 2011-2022 走看看