直接排序,捡便宜的买!
View Code
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 struct node 7 { 8 int p; 9 int h; 10 }; 11 struct node mi[1001]; 12 int cmp(const void *a,const void *b) 13 { 14 return (*(node*)a).p>=(*(node*)b).p?1:-1; 15 } 16 int main() 17 { 18 int c,n,i,j,m; 19 float sum; 20 scanf("%d",&c); 21 while(c--) 22 { 23 sum=0.0; 24 scanf("%d%d",&n,&m); 25 for(i=0;i<m;i++) 26 { 27 scanf("%d%d",&mi[i].p,&mi[i].h); 28 } 29 qsort(mi,m,sizeof(node),cmp); 30 for(i=0;i<m;i++) 31 { 32 if(n>=mi[i].p*mi[i].h) 33 { 34 sum=sum+mi[i].h; 35 n=n-mi[i].p*mi[i].h; 36 } 37 else 38 { 39 sum=sum+n*1.0/mi[i].p; 40 break; 41 } 42 43 } 44 printf("%.2f\n",sum); 45 } 46 return 0; 47 }
ps:貌似在poj上也有这么一个问题,当时错了,貌似是给的不是大米而是给的一个没有单价的物体,之后又给了单价!很多人都坑那了!!!!