hdu1009 FatMouse' Trade(贪心)
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 100000
struct FNode
{
int J, F;
};
bool myCmp(const FNode &f1, const FNode &f2)
{
return (double)f1.J / f1.F > (double)f2.J / f2.F;
}
FNode a[MAXN];
int main()
{
#ifndef ONLINE_JUDGE
freopen("indata.txt", "r", stdin);
#endif
int M, N;
while(scanf("%d %d", &M, &N), M != -1 || N != -1)
{
int i;
for(i = 0; i < N; i++)
{
scanf("%d %d", &a[i].J, &a[i].F);
}
sort(a, a + N, myCmp);
// for(i = 0; i < N; i++) printf("%d %d\n", a[i].J, a[i].F);
double ans = 0.0;
for(i = 0; i < N && M >= a[i].F; i++)
{
M -= a[i].F;
ans += a[i].J;
}
// printf("M=%d\n", M);
if(i < N) ans += (double)M / a[i].F * a[i].J;
printf("%.3f\n", ans);
}
return 0;
}
浙公网安备 33010602011771号