zoukankan      html  css  js  c++  java
  • hdu 2083

    原题连接:

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

    题意:

      给定x轴上n个点,求任意一点到其他点距离和的最小值。

    思路:

      (1)当n=2时:sum=|a-b|(点用a,b,c.......表示);

      (2)当n>2时:以n=3为例,a=1,b=5,c=10。sum1=|a-b|+|a-c|=13、sum2=|b-a|+|b-c|=6、sum3=|c-a|+|c-b|=14 (数据可自己模拟测试);

      由此可以看出当点是有序排列时,中间的点到其他点的距离和是最小的(n为奇、偶时,需另判断);

    代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<algorithm>
     5 
     6 using namespace std;
     7 
     8 int main()
     9 {
    10   int t,n,a[501];
    11   int i;
    12   cin>>t;
    13   while(t--)
    14   {
    15     cin>>n;
    16     for(i=0;i<n;i++)
    17     {
    18       cin>>a[i];
    19     }
    20      sort(a,a+n);
    21     if(n%2==0)
    22     {
    23       long long A=0,B=0;
    24       for(i=0;i<n;i++)
    25       {
    26         A+=abs(a[n/2]-a[i]);
    27         B+=abs(a[n/2-1]-a[i]);
    28       }
    29       if(A>B)
    30         printf("%lld
    ",B);
    31       else
    32         printf("%lld
    ",A);
    33     }
    34     else
    35     {
    36       long long A=0;
    37       for(i=0;i<n;i++)
    38       {
    39         A+=abs(a[n/2]-a[i]);
    40       }
    41       printf("%lld
    ",A);
    42     }    
    43   }
    44 
    45 return 0;
    46 }
  • 相关阅读:
    如何在一台主机上管理自己的多个git repository
    Linux deepin 中Jetbrain Idea等软件中文显示异常
    使用openmp进行并行编程
    使用pthread进行编程
    使用openmp进行共享内存编程
    并行与分布式计算之并行硬件与并行软件
    算法笔记刷题5(PAT A1025)
    算法笔记刷题4(PAT B1009)
    算法笔记刷题3(codeup 5901)
    算法笔记刷题2(codeup 1928)
  • 原文地址:https://www.cnblogs.com/x-x-y/p/6885864.html
Copyright © 2011-2022 走看看