​​

问题描述
  丑枫接到了一份奇葩的工作:往冰库里搬运冰块.冰库外放着N箱冰块,由于室外温度高,冰块会很快融化,且每箱冰块的融化速度不同.因为每箱冰块的体积,质量不等,把每箱冰块搬运进冰块花费的时间也不同.因此需要合理安排搬运顺序,才能使总的冰块融化量最小.丑枫请你帮忙计算最少的总融化量是多少,以便汇报上司.

输入格式
第一行输入整数N   
接下来N行,每行两个整数,分别表示每箱冰块的搬运耗时Ti及融化速度Di.

输出格式

输出最少的总融化量

样例输入

6
6 1
4 5
4 3
6 2
8 1
2 6

样例输出

86
数据规模和约定
2<=N<=100000,1<=Ti<=4000000,1<=Di<=100
样例说明
按照6、2、3、4、1、5的顺序搬运
题目链接搬运冰块

分析:

  1. 首先理解题意, 根据样例输出可以得出,每块冰块在搬运途中不会融化,这一点是需要注意到的。若计算时,让它运送时也融化,就不能AC。
  2. 每个冰块有两个属性,搬运耗时和融化速度,所以我们可以定义一个冰块类,方便后面的计算。
  3. 贪心问题一般会选择恰当的顺序去计算结果,那么我们就要去进行排序,怎么排序呢?根据题意,就是去找最小消耗的顺序。对于任意两个冰块a,b,若先运送冰块a,冰块b消耗为10,然而先运送冰块b,a的消耗为5,那么就要先运送b,再运送a。
  4. 我们可以用Arrays.sort(数组,比较器) 的方法去排序,去new一个Comparator比较器,自定义实现它的compare方法。
  Arrays.sort(ices,new Comparator<Ice>() {//ices是冰块数组@Overridepublic int compare(Ice o1, Ice o2) {//t是搬运耗时,v是融化速度return o1.t*o2.v - o2.t*o1.v ;}});

补充:若compare方法返回值大于1,表示o1和o2需要交换,返回0或者小于0则不需要交换

代码(含注释):

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {public static void main(String[] args) throws Exception {//BufferdReader读取效率比Scanner快,对于数据量较大的可以采用BufferdReaderBufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(reader.readLine());Ice[] ices = new Ice[n];String[] tmp = null;for (int i = 0; i < n; i++) {tmp = reader.readLine().split(" ");//读取每一行的融化耗时和融化速度int t = Integer.parseInt(tmp[0]), v = Integer.parseInt(tmp[1]);ices[i] = new Ice(t, v);//对ices数组每个Ice对象实例化并赋值}Arrays.sort(ices,new Comparator<Ice>() {//自定义比较器@Overridepublic int compare(Ice o1, Ice o2) {return o1.t*o2.v - o2.t*o1.v ;}});int time = 0;//消耗时间long cost = 0;//总融化量,根据题目的数据范围可知,必须用long型for(Ice ice : ices) {//每一块融化量是 运送前面所有冰块的耗时 * 当前冰块的融化速度cost += time * ice.v;time += ice.t;    //运送一块,消耗时间就要加上运送它的耗时,便于计算下一块的消耗}System.out.println(cost);}
}
class Ice{//冰块类int t, v;    //搬运耗时, 融化速度public Ice(int t, int v) {//构造方法this.t = t;this.v = v;}
}

试题 算法提高 搬运冰块(贪心 Java)相关推荐

  1. 蓝桥试题 算法提高 珠心算测验 JAVA

    思路:输入数字总数,输入数字,求输入数字两两相加的和有几种情况例如1 2 3 4这四个数字里面只能有1+2=3和1+3=4,那如果是2+3=5,因为输入的数字里没有5,所以不计入最终结果. 补充知识点 ...

  2. 蓝桥试题 算法提高 冒泡法排序 JAVA

    资源限制 时间限制:1.0s 内存限制:512.0MB 输入10个数,用"冒泡法"对10个数排序(由小到大)这10个数字在100以内. 样例输入 1 3 6 8 2 7 9 0 4 ...

  3. 蓝桥杯 试题 算法提高 P0402 猴子吃桃问题 Java

    试题 算法提高 P0402 资源限制 时间限制:1.0s   内存限制:256.0MB 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个. ...

  4. 试题 算法提高 成绩排名

    试题 算法提高 成绩排名  Lan   2020-03-28 22:34   363 人阅读  0 条评论 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 小明刚经过了一次数学考 ...

  5. 蓝桥杯试题 算法提高 扶老奶奶过街(C语言)

    试题 算法提高 扶老奶奶过街(C语言) 资源限制 时间限制:1.0s 内存限制:256.0MB 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: ...

  6. 试题 算法提高 能量项链

    试题 算法提高 能量项链 问题描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠 ...

  7. 蓝桥试题 算法提高 矩阵翻转

    21-22-1蓝桥训练1 D.试题 算法提高 矩阵翻转 问题描述: Ciel有一个N*N的矩阵,每个格子里都有一个整数.N是一个奇数,设X = (N+1)/2.Ciel每次都可以做这样的一次操作:他从 ...

  8. 蓝桥试题 算法提高 打包(二分法,最大值最小化)

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 Lazy有N个礼物需要打成M个包裹,邮寄给M个人,这些礼物虽然很便宜,但是很重.Lazy希望每个人得到的礼物的编号都是连续的.为了 ...

  9. 蓝桥杯试题 算法提高 转圈游戏 C/C++

    试题 算法提高 转圈游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最 ...

最新文章

  1. 来看看BAT在AR领域的布局,你给打几分?
  2. 验证视图MAC失败 Validation of ViewState MAC Failed
  3. python小游戏源码-导弹发射小游戏——Python源代码
  4. python学习手册视频教程-Python学习精品教程,视频书籍打包下载
  5. web前端html图片轮播,如何使用LayUI实现网页轮播图_WEB前端开发,layui,轮播图
  6. 后端不哭!最新优化性能经验分享来啦
  7. js实现拖拽+碰撞+重力
  8. python保留字的是_Python保留字
  9. java字符串最长回文串_Java中的字符串回文程序
  10. TensorFlow指定特定GPU以及占用显存的比例
  11. spark python教程_spark2.x由浅入深深到底系列七之python开发spark环境配置
  12. linux忘记mysql密码
  13. Qt安装教程(Qt 6.4)
  14. 第二章:上下文无关文法
  15. SpringBoot统一返回结果
  16. KMS验证 错误码ERROR CODE0xC004F074
  17. 调教ChatGpt看这一篇文章就够了
  18. intellidea中GIT操作
  19. 什么是MISRA?如何满足该行业标准?
  20. Android美化menu的小技巧-item菜单项添加标题

热门文章

  1. python_计算本金收益和
  2. 期末WEB大作业——做一个可视化大屏
  3. mysql子查询过多慢_MySQL子查询慢现象的解决
  4. python提供的三种基本数值类型_Python 基础数据类型-数值类型
  5. css实现标题前小竖杠
  6. sql中deallocate是什么
  7. 【看表情包学Linux】进程等待 | wait/waitpid 的 status 参数 | 获取退出码与退出信号 | 初识核心转储
  8. MoveWindow的问题
  9. 在mac上进行hadoop集群搭建
  10. elastic search,又一个基于lucene的nosql好项目