hdu 2570 迷瘴(贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=2570

我真是二啊本来一道挺简单的贪心我愣是想用01背包做,做吧可是还没做出来,不知道哪位用01背包做的可以给我讲讲。从小到大排序知道出现大于w的跳出。。哎写的时候各种错误。。粗心啊。。

#include <cstdio>

#include <cstdlib>

#include <cstring>

int cmp(const void*a,const void *b)

{

    return *(int*)a-*(int*)b;

}

int main()

{

    //freopen("d.txt","r",stdin);

    int n,t,v,w,a[107],sum,V,i;

    scanf("%d",&t);

    while(t--)

    {

        sum=V=0;

        memset(a,0,sizeof(a));

        scanf("%d%d%d",&n,&v,&w);

        for(i=0;i<n;i++)

        scanf("%d",&a[i]);

        qsort(a,n,sizeof(a[0]),cmp);

        for(i=0;i<n;i++)

        {

           if(1.0*(sum+a[i])/(V+1)<=(w*1.0))

           {

               sum+=a[i];

               V+=1;

           }

           else

           break;

        }

        if(sum==0)

        printf("0 0.00\n");

        else

        printf("%d %.2lf\n",V*v,0.01*sum/V);

    }

    return 0;

}

  

你可能感兴趣的:(HDU)