杭电oj--FatMouse‘交易1009-程序员宅基地

技术标签: 算法  java  蓝桥杯  

问题描述
胖老鼠准备了M磅的猫粮,准备与守卫仓库的猫交易,里面装着他最喜欢的食物JavaBean。
仓库有N个房间。第 i 个房间包含 J[i] 磅的 JavaBeans,需要 F[i] 磅的猫粮。FatMouse 不必交易房间里的所有 JavaBeans,相反,如果他支付 F[i]* a% 磅的猫粮,他可能会得到 J[i]* a% 磅的 JavaBeans。这里的 a 是一个实数。现在他给你布置了这个作业:告诉他他可以获得的最大 JavaBeans 数量。
 

输入
输入由多个测试用例组成。每个测试用例都以包含两个非负整数 M 和 N 的行开头。然后是 N 行,每行分别包含两个非负整数 J[i] 和 F[i]。最后一个测试用例后面跟着两个 -1。所有整数都不大于 1000。
 

输出
对于每个测试用例,在一行中打印一个精确到小数点后 3 位的实数,这是 FatMouse 可以获得的最大 JavaBeans 数量。
 

样本输入
5 3 7 2 4 3 5 2 20 3 25 18 24 15 15 10 -1 -1
 

示例输出
13.333
31.500

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int m = sc.nextInt();//钱
            int n = sc.nextInt();//房间数
            if (m == -1 && n == -1) break;
            double[][] arr = new double[n][3];
            for (int i = 0; i < arr.length; i++) {
                arr[i][0] = sc.nextDouble();//可获得的食物量
                arr[i][1] = sc.nextDouble();//价格
                arr[i][2] = arr[i][1] / arr[i][0];//单位价格
            }
            Arrays.sort(arr, new Comparator<double[]>() {
                @Override
                public int compare(double[] o1, double[] o2) {
                    return Double.compare(o1[2], o2[2]);
                }
            });
            double sum = 0;
            for (int i = 0; i < n; i++) {
                if (m <= 0) break;
                if (m >= arr[i][1]) {
                    sum += arr[i][0];
                    m -= arr[i][1];
                } else {
                    sum += m / arr[i][2];
                    break;
                }
            }
            System.out.printf("%.3f", sum);
            System.out.println();
        }

    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_72084166/article/details/136811139

智能推荐

AES加密/解密报错,Input length must be multiple of 16 when decrypting with padded cipher-程序员宅基地

文章浏览阅读4.9k次。背景:需要存储一个类似密钥的字符串,密文存储,并要求能逆向解密出来。问题描述:使用AES对该字符串进行加密后生成byte数组,使用new String()方法转为字符串后存储到数据库。从数据库中取出密文,使用getBytes()方法转换为byte数组,然后解密,此时报如下错误:javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher_input length must be multiple of 16 when decrypting with padded cipher

时间序列分析与生物信息学研究:如何解锁生物数据的时间特征-程序员宅基地

文章浏览阅读786次,点赞21次,收藏8次。1.背景介绍时间序列分析(Time Series Analysis)是一种用于分析随时间推移变化的数据的统计方法。在过去几十年里,时间序列分析在金融、经济、气象等领域取得了显著的成果。然而,在生物信息学领域,时间序列分析的应用相对较少。这篇文章将介绍如何将时间序列分析应用于生物信息学研究,以解锁生物数据中的时间特征。生物信息学研究中的时间序列数据包括基因表达谱、蛋白质修饰、细胞分裂等。这些...

决策树与随机森林算法-程序员宅基地

文章浏览阅读1.9k次,点赞28次,收藏26次。随机森林是由多棵决策树组成的集成模型,每棵决策树都是相对独立的。随机森林利用了决策树的基本思想,但通过引入随机性和集成学习的方法,进一步提升了模型的性能和稳定性。# 创建随机森林分类器随机森林是一种集成学习方法,它由多个决策树构成的分类器组成。每个决策树都是独立训练的,且它们之间相互独立,没有关联。在随机森林中,每棵决策树的训练数据是通过有放回抽样(bootstrap抽样)得到的,这意味着每棵树的训练数据集都是从原始数据集中随机抽取的,可能包含重复的样本,同时也可能有未被抽取的样本。

2017c语言二级考试题,2017年计算机c语言二级考试试题及答案(2)-程序员宅基地

文章浏览阅读395次。17 有两个整型变量dog和cat,若要从磁盘文件把数据读到其中,正确的形式是( ). BA、fscanf(dog ,2,1,fp);B、fscanf(fp,"%d%d",&dog ,&cat);C、fscanf(dog ,cat,2,1,fp);D、fscanf(fp,"%d",&dog ,&cat);二、程序设计:/*----------------------..._有两个整型变量dog和cat,若要从磁盘文件把数据读到其中,正确的形式是

基于python编写的excel表格数据标记的exe文件_python excel整行标记-程序员宅基地

文章浏览阅读339次。在编写该exe文件的时候,首先需要知道需要那些工具以及思路和需求,这样才能更好的解决整体设计以及调整方案。_python excel整行标记

精益DevOps:优化流程,提升效能【文末送书】_devops平台提升效率-程序员宅基地

文章浏览阅读4.2k次,点赞25次,收藏15次。本书为IT服务交付团队及其领导者撰写,从精益思想和精益管理的视角,深入探讨了DevOps方法的核心要素(如任务式指挥、摩擦、风险、态势感知等),并结合实际案例,阐述了如何通过DevOps方法解决IT服务交付中的各种问题,如何在整个组织内改善信息流,从而向客户的目标成果迈进。此外,本书还提供了许多实用的工具和技巧,包括OODA循环、Cynefin框架、服务交付的成熟度模型和服务工程负责人等,以帮助读者更好地应用DevOps方法。_devops平台提升效率

随便推点

python discuz搜索api_Discuz + Sphinx 全文搜索实现-程序员宅基地

文章浏览阅读207次。这篇文章主要介绍用sphinx(csft)做discuz论坛的全文搜索,操作系统为linux,如果需要windows下的可直接参考:http://www.coreseek.cn/sphinx + mmseg安装,这里的sphinx指的是csft,详见:http://www.coreseek.cn/安装 mmseg :# wget -c http://www.coreseek.cn/uploads/..._discuz sphinx

小B的询问 莫队分块-程序员宅基地

文章浏览阅读84次。小B的询问 莫队分块 题目描述小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。输入输出格式输入格式:第一行,三个整数N、M、K。第二行,N个整数,表示小B的序列。..._小b的询问

三角定位法java代码_GitHub - megagao/IndoorPos: 这是一个采用蓝牙4.0--iBeacon技术的室内定位服务端程序。...-程序员宅基地

文章浏览阅读1.3k次。IndoorPos这是一个采用iBeacon技术的室内定位服务端程序,里面包含了三种定位算法,三边定位算法、加权三边定位算法和三角形加权质心定位算法。程序采用Spring框架,简化了JDBC和RMI的样板式代码,并配置了Druid数据库连接池,同时,为了满足高并发的需求,采用了NIO框架Netty,更好地支持大量终端同时定位。程序已经Maven化。一、室内定位系统简介由于卫星信号到达地面时较弱、不..._蓝牙beacon 定位算法 java

手机端下载智慧中小学app,手机端下载niconico视频-程序员宅基地

文章浏览阅读560次,点赞22次,收藏14次。如果openssl不使用系统yum安装的,而是使用自己编译的比较新的版本可以使用--with-openssl=/usr/local/openssl这种方式指定,后面目录为openssl实际安装的目录,另外编译完还要将openssl的lib目录加入ld运行时目录中即可.2)安装readline到/root/Public,网址https://pypi.python.org/pypi/readline,点击download files,选择gz包。安装成功之后,安装目录就在/usr/python。

中M2018春C入门和进阶练习集-编程题51 7-51 求n以内最大的k个素数以及它们的和(20 分)_其中素数按递减顺序输出。若n以内不够k个素数则按实际个数输出。-程序员宅基地

文章浏览阅读1.4k次。7-51 求n以内最大的k个素数以及它们的和(20 分)本题要求计算并输出不超过n的最大的k个素数以及它们的和。输入格式:输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。输出格式:在一行中按下列格式输出:素数1+素数2+…+素数k=总和值其中素数按递减顺序输出。若n以内不够k个素数,则按实际个数输出。输入样例1:1000 10输出..._其中素数按递减顺序输出。若n以内不够k个素数则按实际个数输出。

python字符串换行连接_Python字符串换行-程序员宅基地

文章浏览阅读681次。也许您想使用drawText?这样,您的代码将from reportlab.lib.pagesizes import letterfrom reportlab.pdfgen import canvascanvas = canvas.Canvas("Forensic Report.pdf", pagesize=letter)canvas.setLineWidth(.3)canvas.setFont(..._reportlab连接字符串

推荐文章

热门文章

相关标签