YTU OJ 3294: 快遞中轉點

題目描述

在筆直的餘姚大街上,分佈着密密麻麻的店鋪,每天有成千上萬筆快遞訂單。小明想開個快遞中轉站,那每天一定能賺不少錢。每筆訂單必須當天送達指定店鋪。
爲了簡化問題,小明認爲所有店鋪都在一條座標軸上,並且每個店鋪都在軸上有一個座標,每天他都會把所有快遞放在一箇中轉點上,然後一件一件開始派送。
可是小明是個懶人,他想儘可能少走路。他的快遞中轉站開在什麼位置(位置可以是軸上任意點,也可以和店鋪位置重合),能使得中轉站到所有店鋪的距離之和的最小。那麼就請你和小明一起解決一下這個小問題吧,找到這個最小值。

 

輸入

第一行一個整數N(1<=N<=1000)表示在軸上共有N個店鋪需要送達快遞。 
接下來N行,每行一個整數ai(0<=ai<=1,000,000)表示每個店鋪的位置。 

輸出

包含一個整數,中轉站到所有店鋪的距離之和的最小值。

樣例輸入

5
0
20
40
10
30

樣例輸出

60

來源

ACM集訓隊 

【AC代碼】:

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

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int s[] = new int[n];
		for (int i = 0; i < n; i++)
			s[i] = sc.nextInt();
		Arrays.sort(s);
		int sum = 0;
		int t = 0;
		if (n % 2 != 0)
			t = (s[0] + s[n - 1]) / 2;
		else
			t = s[n / 2];// 或t=s[n/2-1];
		for (int i = 0; i < n; i++)
			sum += Math.abs(s[i] - t);
		System.out.println(sum);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章