zoukankan      html  css  js  c++  java
  • ACdream

    Time Limit: 2000/1000MS (Java/Others) Memory Limit: 262144/131072KB (Java/Others)

    Problem Description

    平面上有n个油井,现在要建立一条主干线,用来把所有的油井产出的原油都输送出去,主干线是平行于x轴的一条直线,每个油井通过一条支线把原油输送到主干线上,现在给定n个油井在平面上的坐标,那么应该把主干线建在什么地方才能让所有的支干线的总长度最小呢?
    这里写图片描述

    Input

    首先一个正整数n,接下来n行每行两个整数,代表n个油井在平面上的位置。n和坐标都是小于等于1000000的正整数。

    Output

    输出总的支干线长度的最小值,每个结果占一行。

    Sample Input

    2
    0 0
    10 10

    Sample Output

    10

    Source
    第九届北京化工大学程序设计竞赛

    Manager
    rihkddd


    这里写图片描述
    当n为奇数时,显然当主干线在中间点2点时支线距离和最小,为x1+x2
    这里写图片描述
    n为偶数时,主干线放在2点或3点时和放在2点,3点之间是距离和是相同的,所以用奇数的先找中间点的方法在偶数的情况下同样适用。
    所以这道题的关键是找出来处于中间的一个点
    ps:不要忘了数据范围,用int会wa,要改成long long。

    #include<stdio.h>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    struct node{
        long long x,y;
    }a[1000000+10]; 
    int cmp(node u,node v)
    {
        return u.y<v.y;
    }
    int main()
    {
        long long n,sum=0,i;
        scanf("%lld",&n);
        for(i=0;i<n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);
        sort(a,a+n,cmp);
        long long mid=a[n/2].y;
        for(i=0;i<n;i++)
        {
            sum+=abs(a[i].y-mid);
        }
        printf("%lld
    ",sum);
        return 0;
    }
  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/Friends-A/p/9309074.html
Copyright © 2011-2022 走看看