ZCMU Problem H: Crixalis's Equipment(贪心,排序)
#include<stdio.h> #include<stdlib.h> struct node { int a,b; }c[1002]; int cmpxy(const struct node *c,const struct node *d) { return (d->b - d->a) - (c->b - c->a); } int main() { int n,i,v,t,flag; // freopen("a.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d%d",&v,&n); flag = 0; for(i=0;i<n;i++) scanf("%d%d",&c[i].a,&c[i].b); qsort(c,n,sizeof(c[0]),cmpxy); for(i=0;i<n;i++) { if( v >= c[i].b) v -= c[i].a; else { flag =1; break; } } if( flag == 0) puts("Yes"); else puts("No"); } return 0; }
/*这是一题贪心,题目大意是蝎子要搬家,第个实例第一行T有一个数,表示的是实例的个数,接下来T个实例,每个实例第一行有两个数V和N,分别表示新家的空间和接下来有N个物品要搬,接下来有N行,第一行有两个数,分别表示这件物品所占的空间,把这件物品搬进家里所需要的空间。所以我们要按照物品所占空间和物品搬进家里所需要的空间的差从大到小排序。刚开始WA,后来又发现如果差相同的话,要把点空间少的先放进去*/