• 2021寒假每日一题《货舱选址》


    货舱选址

    题目来源:《算法竞赛进阶指南》
    时间限制:1000ms 内存限制:64mb

    题目描述

    在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN
    现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。
    为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。

    输入格式

    第一行输入整数N。
    第二行N个整数A1~AN

    输出格式

    输出一个整数,表示距离之和的最小值。

    数据范围

    1 ≤ N ≤ 100000
    0 ≤ Ai ≤ 40000

    样例输入

    4
    6 2 9 1
    

    样例输出

    12
    

    解题思路

    在数轴上选一个点,到其他点距离最短,一定是中位数的点到其他点最短。
    当中位数有2个时,任意取一个即可。
    因此,直接将输入的数组排序,然后取中位数(排序后下标为(n-1/2)的数),再算出距离即可。

    解题代码-Java

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int n = input.nextInt();
            int[] a = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = input.nextInt();
            }
            input.close();
            Arrays.sort(a);
            int mid = (n - 1) / 2;
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += Math.abs((a[mid] - a[i]));
            }
            System.out.println(sum);
        }
    }
    
  • 相关阅读:
    less 28-31
    less27 27a
    sqli 26 26a
    sqli lab 25 25a
    kail 更新源
    sqli lab 23 、24
    less 20 21 22
    less18 19
    less 17
    数字类型,字符串类型,列表类型
  • 原文地址:https://www.cnblogs.com/hurentian/p/14283528.html
Copyright © 2020-2023  润新知