HDU-1009,FatMouse' Trade(贪心水题)

简介: HDU-1009,FatMouse' Trade(贪心水题)

Problem Description:


FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.

The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.


Input:


The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All integers are not greater than 1000.


Output:


For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.


Sample Input:


5 3


7 2


4 3


5 2


20 3


25 18


24 15


15 10


-1 -1


Sample Output:


13.333


31.500


程序代码:


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
  double a,b,c;
}x[1001];
int cmp(node a,node b)
{
  return a.c>b.c;//返回较大的那个值 
}
int main()
{
  int m,n,i;
  double j,f,sum;
  while(scanf("%d %d",&m,&n)&&(m!=-1&&n!=-1))
  {
    sum=0;
    for(i=0;i<n;i++)
    {
      scanf("%lf %lf",&j,&f);
      x[i].a=j;
      x[i].b=f;
      x[i].c=j/f;
    }
    sort(x,x+n,cmp);//从大到小排序 
    for(int k=0;k<n;k++)
    {
      if(m>=x[k].b)//当m大于整体的b时 
      {
        sum+=x[k].a;
        m-=x[k].b;
      }
      else//当m不能整体交换时 
      {
        sum+=m*x[k].a/x[k].b;
        break;
      }
    }
    printf("%.3f\n",sum);
  }
  return 0;
}


相关文章
HDU 4283 You Are the One(动态规划)
HDU 4283 You Are the One(动态规划)
86 0
HDU 4283 You Are the One(动态规划)
HDOJ/HDU 2560 Buildings(嗯~水题)
HDOJ/HDU 2560 Buildings(嗯~水题)
119 0
HDOJ/HDU 2560 Buildings(嗯~水题)
|
数据挖掘
HDU-1032,The 3n + 1 problem(水题)
HDU-1032,The 3n + 1 problem(水题)
|
Go
HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
111 0
|
Java
HDOJ/HDU 5686 Problem B(斐波拉契+大数~)
HDOJ/HDU 5686 Problem B(斐波拉契+大数~)
105 0
|
Java
HDOJ/HDU 1865 1sting(斐波拉契+大数~)
HDOJ/HDU 1865 1sting(斐波拉契+大数~)
106 0
|
算法 C++
HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
119 0
HDOJ(HDU) 1718 Rank(水题、、、)
HDOJ(HDU) 1718 Rank(水题、、、)
102 0
HDOJ(HDU) 2090 算菜价(简单水题、)
HDOJ(HDU) 2090 算菜价(简单水题、)
186 0