原题:

算法提高 快乐司机

时间限制: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

思路:

贪心,用一个结构体存储每个物品的价值,占用重量和单位价值。然后重写cmp函数利用sort函数进行排序(以单位价值为比较条件)。再从单位价值最高的开始装,直到装不下为止。

代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct node{double d1,d2,d3;
}node;
bool cmp(node a,node b)
{return a.d3 > b.d3;
}
int main()
{int n,w;cin>>n>>w;node t[n];for(int i = 0;i < n;i++){cin>>t[i].d1>>t[i].d2;t[i].d3 = t[i].d2 / t[i].d1;}sort(t,t+n,cmp);double sum = 0;//当前累积总价值int num = 0;//当前累积总重量int i = 0;//计数while(1){if(i == n)//当所有物品都装完break;if(num + t[i].d1 >= w)//如果装完t[i]会超出w{sum += (double)(w - num) * t[i].d3;break;}else//如果不会超出{num += t[i].d1;sum += t[i].d2;i++;}}printf("%.1lf",sum);return 0;
}

蓝桥杯算法提高 快乐司机相关推荐

  1. Java实现 蓝桥杯 算法提高 快乐司机

    算法提高 快乐司机 时间限制:1.0s 内存限制:256.0MB 问题描述 "嘟嘟嘟嘟嘟嘟 喇叭响 我是汽车小司机 我是小司机 我为祖国运输忙 运输忙" 这是儿歌"快乐的 ...

  2. 蓝桥杯 算法提高 快乐司机

    问题描述 "嘟嘟嘟嘟嘟嘟 喇叭响 我是汽车小司机 我是小司机 我为祖国运输忙 运输忙" 这是儿歌"快乐的小司机".话说现在当司机光有红心不行,还要多拉快跑.多拉 ...

  3. 蓝桥杯 ADV168 算法提高 快乐司机(贪心 快排)(java)

    算法提高 快乐司机   时间限制:1.0s   内存限制:256.0MB      问题描述 "嘟嘟嘟嘟嘟嘟 喇叭响 我是汽车小司机 我是小司机 我为祖国运输忙 运输忙" 这是儿歌 ...

  4. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  5. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  6. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  7. [蓝桥杯][算法提高VIP]阮小二买彩票

    [蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...

  8. 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】

    蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...

  9. [蓝桥杯][算法提高] 填充蛋糕

    [蓝桥杯][算法提高] 填充蛋糕 编程计算涂满高为2,半径为r的圆形蛋糕表面,需要多少表面积的奶油(只要涂上表面和侧面) 读入一个数r,输出需要奶油的表面积,结果保留一位小数 样例输入 5.0 样例输 ...

最新文章

  1. 有规律格式化文本文件插入数据库
  2. 集合list set Map问题
  3. 如何在CentOS 7上安装Apache
  4. oracle 学习小结11
  5. Bengio和LeCun成为2020年AAAI Fellow,今年无华人学者入选
  6. sql 中删除重复数据的方法
  7. IntelliJ IDEA 2021.1更新了好多实用功能,赶紧下载吧!
  8. u-boot移植随笔:困难重重,前路未知
  9. 像msn那样的message提示
  10. concurrentarraylist_java多线程学习七::::并发下ArrayList和HashMap
  11. flutter打包出的问题
  12. 丁磊卖猪肉,马云种大蒜,千亿身价的土豪都喜欢这么玩
  13. xmpp协议抓包_抓包工具有哪些?大佬们常用的18款抓包工具就是这些
  14. HDU2072 单词数(解法二)【废除!!!】
  15. 在extjs 中使用FCKeditor
  16. 透彻理解高斯过程Gaussian Process (GP)
  17. C++11 auto自动推导
  18. 频谱分析仪是什么东西 怎么去选择----TFN FMT350(3.1gHz)/FMT450(4.4gHz)/FMT650(6gHz) 系列频谱仪
  19. php字符串函数处理emoji,PHP中处理内容含有emoji表情的几种方式
  20. web技术分享| AudioContext 实现音频可视化

热门文章

  1. 2019第十届蓝桥杯省赛C/C++B组题解
  2. pandas取每行最后一个非空元素
  3. c++,输入一个整数,判断它是奇数还是偶数
  4. DYA9面向对象中--super关键字
  5. tikz包 安装_LaTeX—Tikz 宏包入门使用教程
  6. Nginx Lua 之Shared Dict get()方法在存入字符串超长的情况下不支持高并发
  7. 中学生学科学习能力测评
  8. gcd中group实现并发任务全部完成后
  9. Python每日笔记打卡_day4
  10. UnionPay vs Innovation