zoukankan      html  css  js  c++  java
  • 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<iomanip>
    using namespace std;
    struct aa
    {int a,b;
    double c;
    }ab[1002]; 
    int main()
    {
    	int m,n,i,k,l,x,a1,b1,max=1001;
    	double a,b,c,y,c1;
    	while(cin>>m>>n&&m!=-1&&n!=-1)
    	{
    		k=0;
    		for(i=0;i<n;i++)
    		{cin>>a>>b;
    		if (b == 0)  
                                    c = static_cast<double>(max);//////这句不明白  
    		else
    		c=a/b;
    		 if(k==0)
    		 {ab[0].a=a;ab[0].b=b;ab[0].c=c;k=1;}
    		 else 
    		 {
    			 for(l=0;l<i;l++)
    				 if(ab[l].c>c) break;
    				 
    				 for(x=i;x>l;x--)
    				 {ab[x].a=ab[x-1].a;
    				 ab[x].b=ab[x-1].b;
    				 ab[x].c=ab[x-1].c;
    				 }
    				 ab[l].a=a;
    				 ab[l].b=b;
    				 ab[l].c=c;
    		 }
    		}
    y=0;
           while(m>0&&n>0)
    	   {
    		   n--;
    		   if(ab[n].b<m)
    			   y=y+ab[n].a;
    		   else
    		   { y=y+ab[n].c*m;break;}
    		   m=m-ab[n].b;
    	   }
    	  cout<<setiosflags(ios::fixed)<<setprecision(3)<<y<<endl;
    
    	}
    
    return 0;
    }


  • 相关阅读:
    递归练习题1
    爬虫模块之Beautiful Soup4
    python中的简易表格prettytable
    ubuntu中安装和使用quant-lib
    一个金融软件的基础功能分布
    ONLY_FULL_GROUP_BY 牛皮癣怎么治
    pandas
    pandas行筛选/列筛选(条件筛选/范围筛选)/计算
    conda 的 proxy设置
    openpyxl 安装失败的处理 (缺少 et_xmlfile )
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3767020.html
Copyright © 2011-2022 走看看