zoukankan      html  css  js  c++  java
  • A

    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<stdio.h>
    #include<algorithm>
    using namespace std;
    struct p
    {
    	double a;
    	double b;
    	double c;
    };
    bool compare(p A,p B)
    {
    	return A.c>B.c;
    }
    int main()
    {
    	int m,n,i,j;
    	while(scanf("%d%d",&m,&n)!=EOF)
    	{
    		if(m==-1&&n==-1)
    			break;
    	    p t[1001];
            for(i=0;i<n;i++)
    		{
    			cin>>t[i].a>>t[i].b;
    			t[i].c=t[i].a/t[i].b;
    		}
    		sort(t,t+n,compare);	
    		double count=0;
    		for(i=0;i<n;i++)
    		{
    			count+=t[i].b;
    			if(count>m)
    				break;
    		}
    		double sum=0;
    		//if(i==0)
    			//printf("%.3lf
    ",t[0].c*m);
            if(count<m)
    		{
    			for(j=0;j<n;j++)
    				sum+=t[j].a;
    			printf("%.3lf
    ",sum);
    		}
    		else
    		{
    			for(j=0;j<i;j++)
    			{
    				sum+=t[j].a;
    				m-=t[j].b;
    			}
    			printf("%.3lf
    ",sum+m*t[i].c);
    		}
    	}
    	return 0;
    }
    

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main()
    {
    	int m,n;
    	int i,j;
    	double a[1002],b[1002];
    	double c[1002];
    	while(scanf("%d%d",&m,&n)!=EOF)
    	{
    		if(m==-1&&n==-1)
    			break;
    		for(i=0;i<n;i++)
    		{
    			cin>>a[i]>>b[i];
    			c[i]=a[i]/b[i];
    		}
    		for(i=0;i<n;i++)
    		{
    			for(j=0;j<n-i-1;j++)
    			{
    				if(c[j+1]>c[j])
    				{
    					swap(b[j],b[j+1]);
    					swap(a[j],a[j+1]);
    					swap(c[j],c[j+1]);
    				}
    			}
    		}
    		double count=0;
    		for(i=0;i<n;i++)
    		{
    			count+=b[i];
    			if(count>m)
    				break;
    		}
    		double sum=0;
    		if(count<m)
    		{
    			for(j=0;j<n;j++)
    				sum+=a[j];
    			printf("%.3lf
    ",sum);
    		}
    		else
    		{
    			for(j=0;j<i;j++)
    			{
    				sum+=a[j];
    				m-=b[j];
    			}
    			printf("%.3lf
    ",sum+m*c[i]);
    		}
    	}
    	return 0;
    }


  • 相关阅读:
    prototype的本质
    如何只用CSS做到完全居中
    CSS3 过渡效果触发时机的问题
    HTML转义字符
    SVG总结小知识
    JavaScript中Switch使用
    AngularJS注入依赖路由总结
    echart模块化单文件引入
    CSS定义input disabled样式
    海盗船长小米首页小船来回摆动CSS3.0效果
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237306.html
Copyright © 2011-2022 走看看