poj 1700 Crossing River

来源:互联网 发布:js indexof返回第二次 编辑:程序博客网 时间:2024/05/22 09:48

链接:点击打开链接

题意:过河问题,船每次可以载两个人过河,给出每个人过河的时间,求所有人过河所花费最少的时间。

贪心,两种情况花费的时间比较大小。。

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int main(){int t,n,i,j,sum,ans;int a[1100];scanf("%d",&t);while(t--){scanf("%d",&n);sum=0;for(i=0;i<n;i++){scanf("%d",&a[i]);sum+=a[i];    }    if(n==1)    {    printf("%d\n",sum);    }     else    {    sort(a,a+n);   // memset(b,0,sizeof(b));    ans=0;    //j=0;    //b[1]=1;for(i=n-1;i>2;i=i-2){sum=a[0]*2+a[i]+a[i-1];//第一种 j=a[i]+a[1]+a[0]+a[1];//第二种  if(sum<j)ans+=sum;elseans+=j;}if(i==2)ans=ans+a[2]+a[1]+a[0];elseif(i==1)ans+=a[1];elseans+=a[0];printf("%d\n",ans);}}return 0;}