HDU 1009
简单贪心 水题 可是都比的我却还是花了一段时间。。。
其实就是相当于每个房间的汇率不同 然后要求获得尽可能多的食物~~
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
const int maxn=1005;
using namespace std;
struct Node
{
double j,k,l;
};
bool cmp(Node x,Node y)
{
if (x.l>=y.l)
return 1;
else return 0;
}
Node a[maxn];
int main()
{
double my;
int n,i;
while(scanf("%lf%d",&my,&n)!=EOF)
{
if(my==-1&&n==-1)
break;
for(i=0; i<n; i++)
{
scanf("%lf%lf",&a[i].j,&a[i].k);
a[i].l=a[i].j/a[i].k;
}
sort(a,a+n,cmp);
double sum=0;
for(i=0; i<n&&my; i++)//还要考虑到剩余的数量my..
{
if(my>=a[i].k)
{
my=my-a[i].k;
sum+=a[i].j;
}
else
{
sum+=my*a[i].l;
my=0;
}
}
printf("%.3lf\n",sum);
}
return 0;
}