Now is best !

HDOJ 1009

贪心法,每次都尽可能的多买性价比高的物品。

 1 #include <cstdio>
 2 #include <algorithm>
 3 
 4 using namespace std;
 5 struct Room {
 6 int food;
 7 int javabean;
 8 };
 9 
10 bool cmp(struct Room r1, struct Room r2)
11 {
12     double d1 = (double)(r1.javabean)/(double)(r1.food);
13     double d2 = (double)(r2.javabean)/(double)(r2.food);
14     return d1 > d2;
15 }
16 struct Room room[1000];
17 int main()
18 {
19 #ifdef LOCAL
20     freopen("data.in","r",stdin);
21     freopen("data.out","w",stdout);
22 #endif
23     int max_food,n;
24     int i;
25     double ret;
26     while (scanf("%d %d", &max_food,&n) == 2) {
27         if (max_food == -1 && n == -1)
28             break;
29         for(i=0; i<n; ++i) {
30             scanf("%d %d",&room[i].javabean,&room[i].food);
31         }
32         sort(room, room+n, cmp);
33         ret = 0.0;
34         for(i=0; i<n; ++i) {
35             if (max_food > room[i].food) {
36                 ret += room[i].javabean;
37                 max_food -= room[i].food;
38             }
39             else {
40                 ret += (double)(room[i].javabean)/(double)(room[i].food)*max_food;
41                 break;
42             }
43         }
44         printf("%.3f\n",ret);
45     }
46     return 0;
47 }

posted on 2013-10-21 14:34  fang0703  阅读(186)  评论(0)    收藏  举报

导航