题目链接:http://poj.org/problem?id=1700
//pku1700
//题目的意思:是若干个人要过河,只有一只船,每次最多只能坐两个人
//船速以较慢的那个算,给出每个人的过河时间,求最少过河时间
//代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,j;
cin>>n;
int a[1002];
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int sum=0;
for(j=n-1;j>2;j-=2)//每循环过两个人
{
int x,y;
x=a[0]*2+a[j]+a[j-1];//第二种
y=a[1]*2+a[0]+a[j];//第一种
sum+=(x>y? y:x);//选择较少的时间
}
if(j==2)
sum+=a[1]+a[0]+a[2];
else if(j==1)sum+=a[1];
else sum+=a[0];
cout<<sum<<endl;
}
return 0;
}