hdu2083

XiaohuangTX發表於2024-05-16

寒假的時候,ACBOY要去拜訪很多朋友,恰巧他所有朋友的家都處在座標平面的X軸上。ACBOY可以任意選擇一個朋友的家開始訪問,但是每次訪問後他都必須回到出發點,然後才能去訪問下一個朋友。比如有4個朋友,對應的X軸座標分別為1, 2, 3, 4。當ACBOY選擇座標為2的點做為出發點時,則他最終需要的時間為 |1-2|+|2-2|+|3-2|+|4-2| = 4。
現在給出N個朋友的座標,那麼ACBOY應該怎麼走才會花費時間最少呢?

先排序,取中位數。

import java.util.Arrays;
import java.util.Scanner;

public class hdu2083 {

    public static void main(String[] args) {
        // TODO 自動生成的方法存根
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int nn = sc.nextInt();
            int[] aa = new int[nn];
            for (int j = 0; j < aa.length; j++) {
                aa[j] = sc.nextInt();                
            }
            Arrays.sort(aa);
            int sum = 0;
            for (int j = 0; j < aa.length; j++) {
                sum += Math.abs(aa[j]-aa[nn/2]);                
            }
            System.out.println(sum);
        }
        sc.close();
    }
}