HDU 2187 悼念512汶川大地震遇难同胞——老人是真饿了

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

与2111一样,直接贪心即可

View Code
#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

struct node{

    int p,m;

}kk[1100];

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

{

    struct node*c=(struct node*)a;

    struct node*d=(struct node*)b;

    return c->p-d->p;

}

int main()

{

    int t;

    int v,n,i,cnt;

    double pp;

    scanf("%d",&t);

    while(t--)

    {

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

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

            scanf("%d%d",&kk[i].p,&kk[i].m);

        qsort(kk,n,sizeof(struct node),cmp);

        cnt=pp=0;

        while(1){

            pp+=kk[cnt].m;

            v-=kk[cnt].m*kk[cnt].p;

            if(v<0)

            {

                pp-=kk[cnt].m;

                v+=kk[cnt].m*kk[cnt].p;

                pp+=v*1.0/kk[cnt].p;

                v=0;

            }

            cnt++;

            if(cnt==n||v==0)break;

        }

        printf("%.2lf\n",pp);

    }

    return 0;

} 

 

你可能感兴趣的:(HDU)