方法:贪心,类似uva上龙与勇士的例题,排序后从头开始取。
AC代码
#include <iostream> #include <iomanip> #include <string> #include <cstring> #include <cstdio> #include <queue> #include <stack> #include <algorithm> #include <cmath> #include <ctime> using namespace std; struct Food { double J; double F; double radio; }; const int maxn = 1000+10; int cmp(const void *a, const void *b) { return (*(Food *)a).radio < (*(Food *)b).radio ? 1 : -1; } int main() { #ifdef Local freopen("a.in", "r", stdin); #endif int M = 0, N = 0, i = 0; while (cin >> M >> N && M >= 0 && N >= 0) { Food food[maxn] = {0, 0, 0}; double sum = 0; for (i = 0; i < N; i++) { cin >> food[i].J >> food[i].F; food[i].radio = food[i].J / food[i].F; } qsort(food, N, sizeof(food[0]), cmp); for (i = 0; i < N && M > 0; i++) { if (M >= food[i].F) { sum += food[i].J; M -= food[i].F; } else { sum += food[i].radio * M; M = 0; } } cout << fixed << setprecision(3) << sum << endl; } return 0; }
HDOJ - 1009 - FatMouse' Trade(贪心),布布扣,bubuko.com
HDOJ - 1009 - FatMouse' Trade(贪心)
原文:http://blog.csdn.net/u013545222/article/details/21104993