hdu 3177贪心

#include<stdio.h>/*只能按这种形式排序单纯一种形式是不对的,按ai排序
20 2
1 1
10 20
按bi排序
20 2
5 17
1 16 都是不对的
二a.u+b.v得出的是先算a的需要的空间,a.v+b.u算出的是先算b所需要的空间
*/
#include<stdlib.h>
#define N 1100
typedef struct node {
int u,v;
}F;
F f[N];
int cmp(const void *a,const void *b) {
    if((*(F *)a).u+(*(F *)b).v!=(*(F *)a).v+(*(F *)b).u)
        return  (*(F *)a).u+(*(F *)b).v>(*(F *)a).v+(*(F *)b).u?1:-1;
        return 0;
}
int main() {
   int n,m,i,t;
   scanf("%d",&t);
   while(t--) {
    scanf("%d%d",&n,&m);
    for(i=0;i<m;i++)
        scanf("%d%d",&f[i].u,&f[i].v);
    qsort(f,m,sizeof(f[0]),cmp);
    for(i=0;i<m;i++) {
        if(n>=f[i].v)
            n-=f[i].u;
        else
            break;
    }
    if(i==m)
        printf("Yes\n");
    else
        printf("No\n");
   }
return 0;
}

posted @ 2014-06-28 13:56  HYDhyd  阅读(128)  评论(0编辑  收藏  举报