zoukankan      html  css  js  c++  java
  • HDU-1009-FatMouse' Trade(贪心)

    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<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    
    using namespace std;
    
    struct node
    {
    	int a,b;
    	double val;
    }p[10005];
    bool cmp(node x,node y)
    {
    	return x.val>y.val;
    }
    int main()
    {
    	int n,m;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		if(n==-1&&m==-1)
    		{
    			break;
    		}
    		for(int t=0;t<m;t++)
    		{
    			scanf("%d%d",&p[t].a,&p[t].b);
    			p[t].val=p[t].a*1.0/(p[t].b*1.0);
    		}
    		sort(p,p+m,cmp);
    		double s1=0;
    		for(int t=0;t<m;t++)
    		{
    			if(n>=p[t].b)
    			{
    			n-=p[t].b;
    			s1+=p[t].a;
    		   }
    		   else
    		   {
    		   	s1+=(p[t].a*1.0/p[t].b)*n;
    		   	break;
    		   }
    		}
    		printf("%.3f
    ",s1);
    	}
    	
    	return 0;
    }
  • 相关阅读:
    开发常见错误之 :Missing artifact com.sun:tools:jar 1.7.0
    开发常见错误之 : Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar
    kafka集群部署
    kafka
    Oracle 学习之触发器
    CloudSetuper
    erlang :打开界面工具的命令
    erlang 二进制中 拼接 变量或者函数 报错
    Python内部机制。
    AOP (面向切面编程)
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781987.html
Copyright © 2011-2022 走看看