• 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;
    }


  • 相关阅读:
    Kali Linux Web 渗透测试视频教程— 第八课 nessus
    互联网上那些excel文件
    Kali Linux Web 渗透测试视频教程— 第七课 OpenVas
    Kali linux系列之 zmap 安装
    kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap
    kali linux 渗透测试视频教程 第五课 社会工程学工具集
    NLog
    使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录
    日志记录
    webapi获取请求地址的IP
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237306.html
Copyright © 2020-2023  润新知