zoukankan      html  css  js  c++  java
  • 【学习笔记】〖九度OJ〗题目1433:FatMouse

    题目1433:FatMouse

    时间限制:1 秒

    内存限制:128 兆

    特殊判题:

    提交:888

    解决:400

    题目描述:

    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. 

    输入:

    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.

    输出:

    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.

    样例输入:
    5 3
    7 2
    4 3
    5 2
    20 3
    25 18
    24 15
    15 10
    -1 -1
    样例输出:
    13.333
    31.500
    //简单的贪心策略


    #include<iostream>
    #include<algorithm>
    #include<iomanip>
    using namespace std;
    
    class House
    {
    public:
    	int weight;
    	int cost;
    	double ratio;
    	void init(int w, int c)
    	{
    		weight = w;
    		cost = c;
    		ratio = (double)w/(double)c;
    	}
    
    	bool operator < (House h)const
    	{
    		return ratio - h.ratio > 0.0001;
    	}
    };
    
    House wh[1001];
    
    int main()
    {
    	freopen("input.in", "r", stdin);
    	freopen("output.out", "w", stdout);
    	int m, n, w, c, i;
    
    	double res;
    
    	while (cin >> m && m!= -1)
    	{
    		cin >> n;
    		for (i=0; i<n; i++)
    		{
    			cin >> w >> c;
    			wh[i].init(w, c);
    		}
    
    		sort(wh, wh+n);
    
    		//计算
    		res = 0;
    		i=0;
    		while (m>0 && i<n)
    		{
    			if (m>wh[i].cost)
    			{
    				res += wh[i].weight;
    				m -= wh[i].cost;
    			}
    			else
    			{
    				res += (double)m/(double)wh[i].cost * (double)wh[i].weight;
    				m = 0;
    				break;
    			}
    			i++;
    		}
    		cout << setiosflags(ios::fixed) << setprecision(3);
    		cout << res << endl;
    
    	}
    
    	return 0;
    }
    


  • 相关阅读:
    autoresizing代码实现
    控制器的view的加载优先级
    iOS控制器的创建方式
    关于深复制和浅复制
    关于textField
    h5页面列表滚动加载数据
    数据库中存储过程和函数的区别
    Docker搭建Portainer可视化界面
    Docker部署springboot,从简单Eureka开始
    docker安装rabbitmq
  • 原文地址:https://www.cnblogs.com/ymjia/p/3590307.html
Copyright © 2011-2022 走看看