Crixalis‘s Equipment |
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 3097 Accepted Submission(s): 922 |
Problem Description Crixalis - Sand King used to be a giant scorpion(蝎子) in the deserts of Kalimdor. Though he‘s a guardian of Lich King now, he keeps the living habit of a scorpion like living underground Someday Crixalis decides to move to another nice place and build a new house for himself (Actually it‘s just a new hole). As he collected a lot of equipment, he needs to dig a hole beside his new house to store them. This hole has a volume of V units, and Crixalis |
Input The first line contains an integer T, indicating the number of test cases. Then follows T cases, each one contains N + 1 lines. The first line contains 2 integers: V, volume of a hole and N, number of equipment respectively. The next N lines contain N pairs 0<T<= 10, 0<V<10000, 0<N<1000, 0 <Ai< V, Ai <= Bi < 1000. |
Output For each case output "Yes" if Crixalis can move all his equipment into the new hole or else output "No". |
Sample Input 2 20 3 10 20 3 10 1 7 10 2 1 10 2 11 |
Sample Output Yes No |
Source HDU 2009-10 Programming Contest |
Recommend lcy |
分析参考:http://www.cnblogs.com/Action-/archive/2012/07/03/2575069.html
#include<stdio.h> #include<stdlib.h> struct Equipment { int ai; int bi; }ep[1000]; int comp(const void *a,const void *b) { struct Equipment *c=(struct Equipment *)a;//类型转换 struct Equipment *d=(struct Equipment *)b; return (c->ai+d->bi) - (c->bi+d->ai);//不能用大于号代替减号,否则不能AC } int main() { int num=0; int V=0,N=0; int i=0; int flag=0;//能否成功的标志。1为Yes scanf("%d",&num); while(num--) { flag=1; scanf("%d%d",&V,&N); for(i=0;i<N;i++) { scanf("%d%d",&ep[i].ai,&ep[i].bi); } qsort(ep,N,sizeof(struct Equipment),comp); for(i=0;i<N;i++) { if(ep[i].bi>V) { flag=0; break; } V-=ep[i].ai; } if(flag==0) printf("No\n"); else printf("Yes\n"); } return 0; }
Crixalis's Equipment