hdu 1009 FatMouse' Trade

//DP噩梦
//对新手来说比较蛋疼的一题,建议先做其他的
//
31MS 260K 825 B #include <stdio.h> #include <stdlib.h> #define M 1000000 struct node{ int a,; int b; double ab; }c[1005]; int cmp(const void*a,const void*b) { return (*(node *)b).ab > (*(node *)a).ab?1:-1; } int main(void) { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { double ans=0; if(n==-1 && m==-1) break; for(int i=0;i<m;i++){ scanf("%d%d",&c[i].a,&c[i].b); c[i].ab=(double)c[i].a/c[i].b; if(c[i].b==0){ c[i].ab=0;ans+=c[i].a;} } qsort(c,m,sizeof(c[0]),cmp); for(int i=0;i<m;i++){ if(c[i].b==0) break; if(n>=c[i].b){ ans+=c[i].a; n-=c[i].b; }else{ ans+=(double)n*c[i].a/c[i].b; break; } } printf("%.3lf\n",ans); } return 0; }

 

posted @ 2013-09-11 19:40  heaventouch  阅读(82)  评论(0编辑  收藏  举报