#include<cstdio> #include<string> #include<iostream> #include<algorithm> #include<stdlib.h> using namespace std; const int n=1005; struct anode { int j,f; double r;//不能直接算 }node[n]; bool cmp(anode a1,anode b1) { return a1.r>b1.r; } int main() { int n,t; while(scanf("%d %d",&n,&t)!=EOF) { if(n==-1&&t==-1)break; for(int i=0;i<t;i++) { scanf("%d%d",&node[i].j,&node[i].f); node[i].r=(double)node[i].j/node[i].f; } sort(node,node+t,cmp); double sum=0; for(int i=0;i<t;i++) { if(n>node[i].f) { sum+=node[i].j; n-=node[i].f; } else { sum+=(node[i].r*n); n=0; break; } } printf("%.3lf\n",sum); } return 0; }
hdu1009FatMouse' Trade贪心结构体sort排
猜你喜欢
转载自blog.csdn.net/qq_41568836/article/details/80368325
今日推荐
周排行