快乐司机
来源:互联网 发布:新加坡mac dns设置 编辑:程序博客网 时间:2024/04/28 02:28
题目如下:
“嘟嘟嘟嘟嘟嘟
喇叭响
我是汽车小司机
我是小司机
我为祖国运输忙
运输忙”
这是儿歌“快乐的小司机”。话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。司机所拉货物为散货,如大米、面粉、沙石、泥土……
现在知道了汽车核载重量为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.util.*;public class T167 { static int n; static int m; static int []g; static int []v; static double [][]a; public static void main(String[] args) { Scanner scan=new Scanner(System.in); n=scan.nextInt(); m=scan.nextInt(); a=new double [2][n]; g=new int [n]; v=new int [n]; for(int i=0;i<n;i++) { g[i]=scan.nextInt(); v[i]=scan.nextInt(); a[0][i]=v[i]*1.0/g[i]; a[1][i]=i; for(int j=0;j<=i;j++) { if(a[0][i]<a[0][j]) { for(int k=i;k>j;k--) { a[0][k]=a[0][k-1]; a[1][k]=a[1][k-1]; } a[0][j]=v[i]*1.0/g[i]; a[1][j]=i; } } } scan.close(); double result=0; for(int i=n-1;i>=0;i--) { if(m>=g[(int)a[1][i]]) { m-=g[(int)a[1][i]]; result+=v[(int)a[1][i]]; }else { result+=a[0][i]*m; break; } } System.out.println(String.format("%.1f",result)); }}
阅读全文
0 0
- 快乐司机
- 快乐司机
- 快乐司机(贪心)
- 蓝桥杯-快乐司机
- 算法提高 快乐司机
- 算法提高 快乐司机
- 算法提高 快乐司机
- 快乐司机 C语言
- adv167 快乐司机
- 蓝桥杯 算法提高 快乐司机
- 蓝桥杯--算法提高 快乐司机
- 蓝桥网 算法提高 快乐司机
- 蓝桥杯算法提高 快乐司机
- 蓝桥杯 算法提高 快乐司机
- 蓝桥杯 算法提高 快乐司机 (贪心)
- (蓝桥杯练习系统)ADV-167 快乐司机
- 算法提高 快乐司机 (排序,贪心)
- 蓝桥杯 ADV-167算法提高 快乐司机(贪心算法)
- POJ 1315 Don't Get Rooked 笔记
- 剑指offer 面试题6 重建二叉树
- java 单个或多个文件上传
- 成员变量和局部变量
- iOS学习笔记--图片上传
- 快乐司机
- JQuery 操作Cookie
- python字符编码解码,文件编码解码。
- 银行家算法模拟代码
- :after伪类+content内容清除浮动
- 关于 VMware 安装 centos 7 系统 网络配置 的问题
- QT显示一个窗体,show()函数和exec()函数有什么区别?
- 三维场景基本要素和demo-01
- LeetCoder 25. Reverse Nodes in k-Group