hdu 1009 FatMouse‘ Trade(贪心)
添加链接描述
#include <bits/stdc++.h>
using namespace std;
#define MXN 1010
int m, n;
double ans, m2;
struct sRoom{
int f, j;
double jf;
} r[MXN];
int main(){
while(scanf("%d %d", &m, &n)){
if(m == -1 && n == -1) break;
for(int i = 1; i <= n; i++){
scanf("%d %d", &r[i].j, &r[i].f);
r[i].jf = 1.0*r[i].j/r[i].f;
}
sort(r+1, r+n+1, [](sRoom x, sRoom y){
return x.jf > y.jf;
});
ans = 0, m2 = m;
for(int i = 1; i <= n && m2 > 0; i++){
if(m2 >= r[i].f) ans += r[i].j, m2 -= r[i].f;
else ans += r[i].j*m2/r[i].f, m2 = 0;
}
printf("%.3f\n", ans);
}
return 0;
}