得之我幸,不得,我命。仅此而已。
学姐说呀,希望下次看到你的时候依然潇洒如故。(笑~)
我就是这么潇洒~哈哈。
感觉大家比我还紧张~
我很好的。真的
------------------------------------------------------分割线:“我真的很好啦”------------------------------------------------------
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1109
直接贪心即可。
#include<cstdio> #include<algorithm> using namespace std; const int MAXN=1024; struct data { int j,f; double rate; }a[MAXN]; bool operator < (const data& a,const data& b) { return a.rate<b.rate; } int main() { int M,N; while(scanf("%d%d",&M,&N), M!=-1 && N!=-1 ) { for(int i=0;i<N;i++) { scanf("%d%d",&a[i].j,&a[i].f); a[i].rate = (double) a[i].j /(double) a[i].f; } sort(a,a+N); double sum=0; for(int i=N-1;i>=0 && M>=0 ;i--) { if(M==0) break; else if( M >= a[i].f ) { sum+= a[i].j; M-=a[i].f; } else { sum+=M*a[i].rate; M=0; } } printf("%.3lf\n",sum); } }