1. 程式人生 > >POJ1700----Crossing River

POJ1700----Crossing River

string algorithm space else poj1700 turn cst while nbsp

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int a[1005];
 7 int min(int x, int y)
 8 {
 9     return x < y ? x : y;
10 }
11 int main()
12 {
13     int t, n;
14     cin >> t;
15     while (t--)
16     {
17 cin >> n; 18 for (int i = 0; i < n; ++i) 19 cin >> a[i]; 20 sort(a, a + n); 21 int ans = 0, ant = n - 1; 22 while (ant >= 0) 23 { 24 if ( ant == 0) ans += a[0]; 25 else if (ant == 1) ans += a[1]; 26 else
if (ant == 2) ans += a[0] + a[1] + a[2]; 27 else ans += min(2 * a[0] + a[ant] + a[ant - 1], 2 * a[1] + a[0] + a[ant]); 28 if (ant > 2) ant -= 2;//大於3個時,2組兩組進行 29 else break; 30 } 31 cout << ans << endl; 32 } 33 return 0; 34 }

POJ1700----Crossing River