• HDU 4311 Meeting point-1(曼哈顿距离最小)


    http://acm.hdu.edu.cn/showproblem.php?pid=4311

    题意:
    在二维坐标中有n个点,现在要从这n个点中选出一个点,使得其他点到该点的曼哈顿距离总和最小。

    思路:

    离散化分别处理x坐标和y坐标。

    将点按照x坐标进行排序,sum数组记录记录前缀和,那么当选第i个点时其余点在x轴到该点的距离为 $(i-1)*p[i].x-sumx[i-1] + (sumx[n]-sumx[i]) - (n-i)*p[i].x$。

    y坐标同理。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 using namespace std;
     5 typedef long long ll;
     6 
     7 int n;
     8 
     9 struct node
    10 {
    11     ll x,y;
    12     int id;
    13 }p[100005];
    14 
    15 ll sumx[100005],sumy[100005];
    16 ll numx[100005],numy[100005];
    17 
    18 bool cmp1(node a, node b)
    19 {
    20     return a.x < b.x;
    21 }
    22 
    23 bool cmp2(node a, node b)
    24 {
    25     return a.y < b.y;
    26 }
    27 
    28 int main()
    29 {
    30     int T;
    31     scanf("%d",&T);
    32     while(T--)
    33     {
    34         scanf("%d",&n);
    35         for(int i=1;i<=n;i++)
    36         {
    37             scanf("%lld%lld",&p[i].x,&p[i].y);
    38             p[i].id = i;
    39         }
    40         
    41         sumx[0] = sumy[0] = 0;
    42         sort(p+1,p+n+1,cmp1);
    43         for(int i=1;i<=n;i++)  sumx[i] = sumx[i-1] + p[i].x;
    44         for(int i=1;i<=n;i++)  numx[p[i].id] = ((i-1)*p[i].x-sumx[i-1] + (sumx[n]-sumx[i]) - (n-i)*p[i].x);
    45         sort(p+1,p+n+1,cmp2);
    46         for(int i=1;i<=n;i++)  sumy[i] = sumy[i-1] + p[i].y;
    47         for(int i=1;i<=n;i++)  numy[p[i].id] = ((i-1)*p[i].y-sumy[i-1] + (sumy[n]-sumy[i]) - (n-i)*p[i].y);
    48 
    49         ll ans = numx[1] + numy[1];
    50         for(int i=2;i<=n;i++)
    51             ans=min(ans,numx[i]+numy[i]);
    52         printf("%lld
    ",ans);
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    js函数动态传参
    js 异步加载
    js 遍历
    安卓——implements——OnClickListener
    安卓——BroadcastReceiver
    关于Linux下的硬链接
    Linux 的文件类型
    linux 学习
    虚函数与重载函数的区别
    虚函数和友元
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/7859216.html
Copyright © 2020-2023  润新知