您的位置:首页 > 其它

HDU 1009 FatMouse' Trade(贪心)

2017-08-09 22:49 405 查看
题目链接:点击打开链接

题意:一共有n个房间,每个房间里有一定数量的JavaBeans,每个房间里的JavaBeans价格不一样,而且每个房间的JavaBeans可以购买任意数量。FatMouse有m元,最多可以买多少JavaBeans?

思路:贪心水题......求出单价,按照单价递减排序,再逐个处理。
// HDU 1009 FatMouse' Trade.cpp 运行/限制:31ms/1000ms
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
struct node {
int j, f;
double avg;
bool operator<(const node &a)const {
return this->avg > a.avg;
}
}a[1005];
int main(){
int m, n;
double re;
while (scanf("%d%d", &m, &n) != EOF) {
if (m == -1 && n == -1) break;
for (int i = 0; i < n; i++) {
scanf("%d%d", &a[i].j, &a[i].f);
a[i].avg = (double)a[i].j / a[i].f;
}
sort(a, a + n);
re = 0.0;
for (int i = 0; i < n && m; i++) {
if (m >= a[i].f) {
re += a[i].j;
m -= a[i].f;
}
else {
re += (double)(a[i].j * m) / a[i].f;
m = 0;
}
}
printf("%.3f\n", re);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: