過河問題
- 描述
-
在漆黑的夜裏,N位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,N個人一共只帶了一隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,N人所需要的時間已知;而如果兩人同時過橋,所需要的時間就是走得比較慢的那個人單獨行動時所需的時間。問題是,如何設計一個方案,讓這N人儘快過橋。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T =sc.nextInt();
while(T-->0){
int N =sc.nextInt();
int a[]=new int [N];
for(int i=0; i<N; i++)
a[i]=sc.nextInt();
int sum=0;
Arrays.sort(a);
if(N<=2){System.out.println(a[N-1]);continue;}
if(N==3){System.out.println(a[0]+a[1]+a[2]);continue;}
sum =a[1];
for(int i=N-1; i>=3; i-=2){
sum +=Math.min(a[0]+a[i]+a[0]+a[i-1], a[0]+a[1]+a[i]+a[1]);
}if(N%2==1)sum +=a[2]+a[0];//奇數的時候,別忘了,錯了半天!!
System.out.println(sum);
}
}
}