标签:贪心
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #include<set> #include<map> #define L(x) (x<<1) #define R(x) (x<<1|1) #define MID(x,y) ((x+y)>>1) #define eps 1e-8 typedef __int64 ll; #define fre(i,a,b) for(i = a; i < b; i++) #define free(i,b,a) for(i = b; i >= a;i--) #define mem(t, v) memset ((t) , v, sizeof(t)) #define ssf(n) scanf("%s", n) #define sf(n) scanf("%d", &n) #define sff(a,b) scanf("%d %d", &a, &b) #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c) #define pf printf #define bug pf("Hi\n") using namespace std; #define INF 0x3f3f3f3f #define N 5005 int a[N],n; int main() { int i,j,t; sf(t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) sf(a[i]); if(n==1) { pf("%d\n",a[0]); continue; } int ans=0; sort(a,a+n); int e=n-1; while(1) { if(e==1) { ans+=max(a[0],a[1]); //两个人 break; } if(e==2) { ans+=a[0]+a[1]+a[2]; //三个人 break; } //送最慢两个人过河 ans+=min(a[e]+a[0]+a[e-1]+a[0],a[1]+a[e]+a[0]+a[1]); //0 e 去 0回 0 e-1 去,0回 e-=2; //0 1 去,0回,e,e-1去,1回 } pf("%d\n",ans); } return 0; }
标签:贪心
原文地址:http://blog.csdn.net/u014737310/article/details/45598909