zoukankan      html  css  js  c++  java
  • 【hdoj_2187】老人是真饿了

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2187


    题意:由很多种价格的大米,在经费一定的情况下,买重量更多的大米,并且题目假设经费买不光所有的大米.


    思路:贪心法,先买价格低的,再买价格高的.所以先按照价格递增将大米排序(结构体排序),然后消耗经费,至到经费用完.


    C++代码如下

    #include<iostream>
    #include<algorithm>
    #include<iomanip>
    using namespace std;
    
    struct Rice//大米有价格、重量两个属性 
    {
    	int p,h;	
    };
    
    bool cmp(Rice r1,Rice r2)//用于结构体排序 
    {
    	return r1.p < r2.p;
    }
    
    int main()
    {
    	int C;
    	cin >> C;//测试的数据有C组 
    	while(C--)
    	{
    		int n,m;
    		cin >> n >> m;
    		Rice * r = new Rice[m];
    		for(int i=0;i<m;i++)
    			cin >> r[i].p >> r[i].h;//输入大米价格和重量 
    		sort(r,r+m,cmp);//排序 
    		double result = 0.0;//能买到的大米的最大重量,用double 
    		for(int i=0;i<m;i++)
    		{
    			if(n==0)	break;
    			if(n>r[i].p * r[i].h)
    			{
    				result += r[i].h;
    				n -= r[i].p * r[i].h;
    			}
    			else
    			{
    				result += (double)(n) / r[i].p;
    				break; //经费用完了,退出 
    			}
    		}
    		cout << setprecision(2) << fixed << result << endl;//两位小数(#include<iomanip>) 
    	}
    	
    	return 0;
    }


  • 相关阅读:
    微信用户授权,获取code
    关于swiper在vue中不生效的问题
    ES6-Set 和 Map 数据结构
    Js中caller和callee的区别
    类与对象基础总结--继承,多态
    java 类与对象基础整理
    java 的数据库操作--JDBC
    Socket的长连接和短连接
    java 的底层通信--Socket
    算法--树与递归
  • 原文地址:https://www.cnblogs.com/tensory/p/6590764.html
Copyright © 2011-2022 走看看