Java实现 蓝桥杯 算法提高 快乐司机
算法提高 快乐司机
时间限制:1.0s 内存限制:256.0MB
问题描述
“嘟嘟嘟嘟嘟嘟
喇叭响
我是汽车小司机
我是小司机
我为祖国运输忙
运输忙”
这是儿歌“快乐的小司机”。话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。司机所拉货物为散货,如大米、面粉、沙石、泥土…
现在知道了汽车核载重量为w,可供选择的物品的数量n。每个物品的重量为gi,价值为pi。求汽车可装载的最大价值。(n<10000,w<10000,0<gi<=100,0<=pi<=100)
输入格式
输入第一行为由空格分开的两个整数n w
第二行到第n+1行,每行有两个整数,由空格分开,分别表示gi和pi
输出格式
最大价值(保留一位小数)
样例输入
5 36
99 87
68 36
79 43
75 94
7 35
样例输出
71.3
解释:
先装第5号物品,得价值35,占用重量7
再装第4号物品,得价值36.346,占用重量29
最后保留一位小数,得71.3
import java.math.BigDecimal;
import java.util.Scanner;
public class 快乐司机 {
public static void main(String args[]) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
// 输入货物种类
int classes = input.nextInt();
// 输入总载货量
float weight = input.nextFloat();
float each_price[] = new float[classes];
float each_weight[] = new float[classes];
// 输入每种货物的价值和重量
for(int i =0;i<classes;i++) {
each_weight[i] = input.nextFloat();
each_price[i] = input.nextFloat();
}
// 测试输入数据的正确性
// for(int i = 0;i<classes;i++) {
// System.out.println("wight:"+each_weight[i]+" price:"+each_price[i]);
// }
float benefit[] = new float[classes];
// 计算每种货物的价值比
for(int i = 0;i<classes;i++) {
benefit[i] = each_price[i] / each_weight[i];
BigDecimal b = new BigDecimal(benefit[i]);
benefit[i] = b.setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
}
// 测试货物价值比正确性
// for(int i = 0;i<classes;i++) {
// System.out.println(benefit[i]);
// }
float sum_weight = 0;
float sum_price = 0;
int k = 0;
float max;
for(int i = 0;i<classes;i++) {
max = 0;
// 寻找最大价值比商品
for(int j = 0;j<classes;j++) {
if(benefit[j] >= max) {
max = benefit[j];
k = j;
}
}
// System.out.println("benefit:"+benefit[k]+" index:"+k);
// 将当前货物的全部装入货车
if(sum_weight + each_weight[k] <= weight) {
sum_price += each_price[k];
sum_weight += each_weight[k];
}
// 将当前货物的部分装入货车
else {
sum_price += (weight - sum_weight) * benefit[k];
break;
}
benefit[k] = -1;
}
// 保留一位小数并输出总价值
BigDecimal b = new BigDecimal(sum_price);
sum_price = b.setScale(1,BigDecimal.ROUND_HALF_UP).floatValue();
System.out.println(sum_price);
}
}
Java实现 蓝桥杯 算法提高 快乐司机的更多相关文章
- Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)
试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...
- Java实现 蓝桥杯 算法提高 小X的购物计划
试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...
- Java实现 蓝桥杯 算法提高 天天向上(DP)
试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...
- Java实现 蓝桥杯 算法提高 欧拉函数(数学)
试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...
- Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)
试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...
- Java实现蓝桥杯 算法提高 线段和点
算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...
- Java实现蓝桥杯-算法提高 P1003
算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...
- Java实现蓝桥杯 算法提高 八皇后 改
**算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...
- Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)
试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...
随机推荐
- Day_09【常用API】扩展案例3_删除源字符串中的指定字符,并计算指定字符出现的次数
分析以下需求,并用代码实现 1.键盘录入一个源字符串由字符串变量scrStr接收 2.键盘录入一个要删除的字符串由字符串变量delStr接收 3.要求 删除该字scrStr符串中的所有delStr字符 ...
- STM32 Bootloader基于ymodem传输协议串口IAP升级详解
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 1 预备知识 2 Bootloader 2.1 启动流程 2.2 校验跳转地址是否有效 ...
- 利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
采用Maven 聚合工程搭建 Spring Cloud 使用工具: IntelliJ IDEA 版本: 2019.2.2 maven 版本: 3.6.0 JDK ...
- [CodeForces 300D Painting Square]DP
http://codeforces.com/problemset/problem/300/D 题意:每一次操作可以选一个正方形,令边长为n,如果n为奇数那么可以从中间画一个十字,分成4个大小相等的边长 ...
- 测试开发专题:如何在spring-boot中进行参数校验
上文我们讨论了spring-boot如何去获取前端传递过来的参数,那传递过来总不能直接使用,需要对这些参数进行校验,符合程序的要求才会进行下一步的处理,所以本篇文章我们主要讨论spring-boot中 ...
- CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
<从头搭建持续集成 DevOps 流水线>由资深敏捷教练.极限编程学院高级讲师.CODING 特邀敏捷顾问李小波老师主讲,将基于 CODING 展示如何编写 Jenkinsfile 搭建 ...
- javaWeb删除一条及多条数据
一.编写dao //删除根据ID@Delete("delete from product where id=#{id}")public void delete(Integer id ...
- 搭建私有镜像仓库registry 2.0
搭建 docker run -d -p 5000:5000 --restart=always --name registry2 registry:2 就可以将自己的镜像 push到这个私有的镜像仓库 ...
- 二、YARN
一.YARN 介绍 yarn 是下一代 MapReduce,即 MRv2,是在第一代 MapReduce 基础上演变而来的,主要是为了解决原始 Hadoop 扩展性较差,不支持多计算框架而提出的,通俗 ...
- Form action 方法上传文件
<form method="post" id="form1" runat="server" enctype="multipa ...