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

    hihocoder-1931-最短管道距离

    #1931 : 最短管道距离

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    在一张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,排序后,双指针前后夹扫。

      时间复杂度: O(N logN) 

    #include <cstdlib> 
    #include <cstdio> 
    #include <cstring> 
    const int MAXN = 100000 + 10;
    
    int n, num[MAXN]; 
    
    int cmp(const void *a, const void *b)
    {
    	return (*(int *)a - *(int *)b); 
    }
    
    int main(){ 
        long long ans = 0; 
    
        int x, y; 
        scanf("%d", &n); 
        for(int i=0; i<n; ++i)
        {
        	scanf("%d %d", &x, &y);
        	num[i] = y;  
        }
    
        qsort(num, n, sizeof(num[0]), cmp); 
        
        int i = 0, j = n-1;
        while(i <= j)
        {
        	ans += (long long)(num[j] - num[i]); 
        	++i; 
        	--j; 
        }
        printf("%lld
    ", ans); 
        return 0; 
    } 
    

      

  • 相关阅读:
    R学习笔记3 数据处理
    R学习笔记2 因子
    R学习笔记1 介绍R的使用
    正则表达式之邮箱、手机号码、电话号码,url地址
    vue之axios运用
    angularJS导出数据到Excel
    vue2全选反选
    css设置垂直居中
    js实现鼠标选中文本改变选中区域颜色以及给选中区域加上html标签
    安装了Vetur之后的配置
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/10461040.html
Copyright © 2011-2022 走看看