POJ 1700 Crossing River

来源:互联网 发布:淘宝福袋是死人衣服吗 编辑:程序博客网 时间:2024/05/05 23:30

贪心问题。

先排序,然后 1 2 过去,1 回来,最大的两个过去,然后2回来,一次带过2个最大的。

还有一种情况就是这样不划算,就直接过去。比较这两个大小然后选择。

POJ AC代码:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n,a[1001],i;        scanf("%d",&n);        for(i=0;i<n;i++)        scanf("%d",&a[i]);        sort(a,a+n);        int ans=0;        while(n>3)        {            ans+=min(a[1]+a[0]+a[1]+a[n-1],a[0]+a[0]+a[n-1]+a[n-2]);            n-=2;        }        if(n==3)        ans+=a[1]+a[0]+a[2];        else if(n==2)        ans+=a[1];        else if(n==1)        ans+=a[0];        printf("%d\n",ans);    }}


原创粉丝点击