Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9869 Accepted Submission(s): 4117
对于幸存的灾民来说,最急待解决的显然是温饱问题,救灾部队一边在组织人员全力打通交通,一边在组织采购粮食。现在假设下拨了一定数量的救灾经费要去市场采购大米(散装)。如果市场有m种大米,各种大米的单价和重量已知,请问,为了满足更多灾民的需求,最多能采购多少重量的大米呢?
1 7 2 3 3 4 4
2.33
WA原因:if(n<=rice[i].p*rice[i].h)这个条件句写错了。。最开始写的是n>=...另外这里最好写成相乘会好很多,还有数组要开打一点。
非WA原因:cmp函数定义为int型,未进行数据c的多组输入输出。
#include<stdio.h> #include<algorithm> using namespace std; struct node{ double p; double h; }rice[1010]; int cmp(node a,node b){ return a.p<b.p; } int main(){ int c; scanf("%d",&c); while(c--){ int m,i; double n,sum=0; scanf("%lf%d",&n,&m); for(i=0;i<m;i++){ scanf("%lf%lf",&rice[i].p,&rice[i].h); } sort(rice,rice+m,cmp); for(i=0;i<m;i++){ if(n<=rice[i].p*rice[i].h){ sum+=n*1.0/rice[i].p; break; } else{ sum+=rice[i].h*1.0; n-=rice[i].p*rice[i].h; } } printf("%.2lf\n",sum); } return 0; }