java HDU-1009

这个题目用了下类的自然排序,之前都没咋地用过刚好练习练习:(自然排序的时候是升序所以注意下判断的返回值就行了),

质量方面可能不会很好,随意看看就行,有问题什么的都是可以说的

或者对于我的方法不太懂得可以找我聊聊QQ1282573995,也可以来找我一起来或者有人愿意带我的这枚小白的

也很是欢迎的(掌声)~~~

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1009

题目大意:

Fat mouse 拿着它的M磅猫粮去换取食物,有n间房间,第i间有J[i]磅食物,用F[i]*a%换取J[i]*a%的食物,

问最多换多少食物,保留三位小数

做法的话贪心就行


代码

import java.util.*;
class Main
{
	public static void main(String[] args) 
	{
		Scanner scanf= new Scanner(System.in);
		int m,n;
		Room[] r= new Room[1100];
		while(scanf.hasNextInt()){
			m=scanf.nextInt();
			n=scanf.nextInt();
			if(m==-1||n==-1)
				break;
			double ans=0;
			for(int i=0;i<n;i++){
				int a,b;
				a=scanf.nextInt();
				b=scanf.nextInt();
				r[i]=new Room(a,b,(double)a/(double)b);
			}
			Arrays.sort(r,0,n);
			for(int i=0;i<n;i++){//结束条件是i<n;不要m!=0
				if(m>r[i].F)
				{
					ans+=(double)r[i].J;
					m-=r[i].F;
				}
				else
				{
					ans+=(((double)m*(double)r[i].J)/(double)r[i].F);
					break;
				}
			}
			System.out.println(String.format("%.3f",ans));
		}
	}
}
class Room implements Comparable
{
	public int J;
	public int F;
	public double chu;
	Room(int J,int F,double chu)
	{
		this.J=J;
		this.F=F;
		this.chu=chu;
	}
	public int compareTo(Object obj)//实现比较方法,让此类具有自然排序
	{
		Room r=(Room)obj;
		if(chu>r.chu)//sort是升序,所以大于返回-1
			return -1;
		else if(chu<r.chu)
			return 1;
		else
			return 0;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值