zoukankan      html  css  js  c++  java
  • HDU 2083 简易版之最短距离

    简易版之最短距离

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 20196    Accepted Submission(s): 9150


    Problem Description
    寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上。ACBOY可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友。
    比如有4个朋友,对应的X轴坐标分别为1, 2, 3, 4。当ACBOY选择坐标为2的点做为出发点时,则他最终需要的时间为 |1-2|+|2-2|+|3-2|+|4-2| = 4。
    现在给出N个朋友的坐标,那么ACBOY应该怎么走才会花费时间最少呢?
     
    Input
    输入首先是一个正整数M,表示M个测试实例。每个实例的输入有2行,首先是一个正整数N(N <= 500),表示有N个朋友,下一行是N个正整数,表示具体的坐标(所有数据均<=10000).
     
    Output
    对于每一个测试实例,请输出访问完所有朋友所花的最少时间,每个实例的输出占一行。
     
    Sample Input
    2 2 2 4 3 2 4 6
     
    Sample Output
    2 4
     
     
    分析:  需要找一个点,到所有的点的距离最短
                那么奇数可以找最中间的那一个,偶数找中间二个点的之间任意一个点为中心点,简单画一下就可以看出来
    代码如下:
    #include <stdio.h>
    #include <algorithm>
    #include <iostream>
    #include <string.h>
    #include <queue>
    #include <cmath>
    #include <vector>
    #include <map>
    
    using namespace std;
    int a[550];
    int main()
    {
       int t,n,ans;
       scanf("%d",&t);
       while(t--)
       {
           ans=0;
           scanf("%d",&n);
           for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
           sort(a,a+n);
          for(int i=0;i<n;i++)
            ans+=abs(a[n/2]-a[i]);
          cout<<ans<<endl;
       }
        return 0;
    }
  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/a249189046/p/7617985.html
Copyright © 2011-2022 走看看