目录

题目信息:

题目分析:

题解代码:


题目信息:

注:4指一共有四箱糖果,15指雪橇共能带走的最大重量为15,接下来输出4行,每行两个数据,

第一个数据指这箱糖果的价值,第二个数据指这箱糖果的重量。

题目分析:

这是一道很典型的贪心问题,因为要带走的糖果价值总和最大,且注意可以拆分成散装带走,也就是说当装了整箱糖果后,若剩下的空间不足以再装下一整箱糖果,可以拆分来装,固这题我们首先要求的就是每箱糖果价值与重量的比值,最大的先装,以此类推,到最后装不满一箱时再拆分。

题解代码:

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-6;
struct Candy
{int v;  //价值v 重量wint w;bool operator < (const Candy & c) const{return double(v)/w-double(c.v)/c.w > eps;  //排序规则:价值重量比大的先装}
}candies[110];
int main()
{int n,w;cin>>n>>w;for(int i=0;i<n;i++)  //记录每箱糖果的价值和重量{cin>>candies[i].v>>candies[i].w;}sort(candies,candies+n);  //按上面的规则排序int totalW=0;double totalV=0;for(int i=0;i<n;i++){if(totalW + candies[i].w<=w)  //若雪橇剩余载重量够装这一整箱{totalW+=candies[i].w;totalV+=candies[i].v;}else  //若不够则拆分装{totalV+=candies[i].v*double(w-totalW)/candies[i].w;break;}}printf("%.1f",totalV);return 0;
}

附:样例测试

4 15
100 4
412 8
266 7
591 2

经典贪心问题之圣诞老人的礼物相关推荐

  1. 贪心算法之圣诞老人的礼物

    问题描述 圣诞节来临了,中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走,圣诞老人的寻路雪橇最多只能装下重量W的糖果,请问圣诞老人最多能带 ...

  2. 基础算法——贪心算法(圣诞老人的礼物)

    题目是这样的: 圣诞节来临了,中圣诞老人准备分发糖果现在有多箱不同的糖果, 每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走.圣诞老人的驯鹿雪橇最多只能装下重量W的糖果,请问圣诞老人最 ...

  3. Bailian4110 圣诞老人的礼物-Santa Clau’s Gifts【背包+贪心】

    4110:圣诞老人的礼物-Santa Clau's Gifts 总时间限制: 1000ms 内存限制: 65536kB 描述 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖 ...

  4. Poj 圣诞老人的礼物 贪心

    圣诞节?快乐^ - ^ POJ 4110 圣诞老人的礼物(贪心) 描述 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合 ...

  5. 贪心题目——圣诞老人的礼物

    例题 圣诞老人的礼物 分发糖果,多箱不同的糖果,每箱有自己的价值和重量,每箱都可以拆分成任意散装组合带走,但是雪橇只能装下W重量的糖果,请问圣诞老人最多能敌啊走多大价值的糖果. 输入: 1⃣️n (箱 ...

  6. 4110:圣诞老人的礼物-Santa Clau’s Gifts(java)

    4110:圣诞老人的礼物-Santa Clau's Gifts(java) 描述 圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任 ...

  7. 【经典贪心练习】金银岛

    [贪心练习]金银岛 哈喽,大家好,我是赏月君,今天做一下经典贪心算法的题目--金银岛,废话少说,上题目. 题目描述 某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝 ...

  8. 百练-4110 圣诞老人的礼物-Santa Clau’s Gifts

    4110:圣诞老人的礼物-Santa Clau's Gifts 查看 提交 统计 提示 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 圣诞节来临了,在城市A中圣诞老人准备分发 ...

  9. leetcode:55. 跳跃游戏【经典贪心】

    分析 维护当前走到的位置,以及当前能走的最大区间内下一次走到的最远位置maxPos 当前能走的位置就是[cur, maxPos]但是在走的过程中,边走边看下一次的maxPos,然后当cur走到上一个m ...

最新文章

  1. 洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
  2. visual studio配置第三方库
  3. 【Webview相关问题】登陆失败之cookie陷阱
  4. rust实战入门到进阶(4)
  5. Linux线程——线程创建和基本使用(多线程并发)
  6. 当滑动时隐藏Actionbar
  7. 弱引用的用途:在底层C++对象被上层python脚本对象使用时(转)
  8. Java 并发总结——线程池
  9. ZT Web Control 开发系列(一) 页面的生命周期
  10. 推行法定数字货币,现有支付宝/微信等支付系统,会否被数字货币支付系统替代并超越?
  11. 【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
  12. python安装pygame教程_Pygame安装教程
  13. 25.HTTP协议和WEB服务器APACHE
  14. linux tty core code,linux tty core 源码分析(6)
  15. redis-cli使用说明
  16. 在线教育数据分析实战项目案例
  17. Gallery与Imageswitch完美结合 做相册一绝啊
  18. Linux操作系统安全(一)
  19. 百度AI实现Web端人脸识别登陆-Springboot-Vue/element-ui
  20. SAP-ABAP性能优化之构建嵌套结构的哈希表

热门文章

  1. css垂直居中和水平居中方法总结
  2. 湿地营救机器人_“湿地卫士”创意机器人,真棒!
  3. 汽车保养猫腻太多,名悦集团教你轻松养车省钱省力
  4. 【GIS数据处理】 利用空间关系建立线CAD数据和属性表关联
  5. Ubuntu上安装fcitx五笔输入
  6. 对称、群论与魔术(四)——空白扑克卡片的对称性研究
  7. 西行漫记(6):Diversity
  8. 高清摄像头MIPI CSI2接口浅解【转】
  9. 使用Postfix和Dovecot部署邮件系统
  10. 北京某金融公司(Java开发实习生)面试及答案