1225:金银岛时间限制: 1000 ms         内存限制: 65536 KB提交数: 9510     通过数: 5114
【题目描述】
某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同,分别为n1,n2,...,ns,同时每个种类的金属总的价值也不同,分别为v1,v2,...,vs。KID想一次带走价值尽可能多的金属,问他最多能带走价值多少的金属。注意到金属是可以被任意分割的,并且金属的价值和其重量成正比。【输入】
第1行是测试数据的组数k,后面跟着k组输入。每组测试数据占3行,第1行是一个正整数w(1≤w≤10000),表示口袋承重上限。第2行是一个正整数s(1≤s≤100),表示金属种类。第3行有2s个正整数,分别为n1,v1,n2,v2,...,ns,vs分别为第一种,第二种,...,第s种金属的总重量和总价值(1≤ni≤10000,1≤vi≤10000)。【输出】
k行,每行输出对应一个输入。输出应精确到小数点后2位。【输入样例】
2
50
4
10 100 50 30 7 34 87 100
10000
5
1 43 43 323 35 45 43 54 87 43
【输出样例】
171.93
508.00
思路:计算单位价值,排序即可
#include<bits/stdc++.h>
using namespace std;struct metal{double n,v,value;//n为金属重量,v为金属价值,value为金属的单位价值
}m[105];bool cmp(metal a,metal b){  //按单位价值升序 return a.value<b.value;
}int main(){int k;cin>>k;         //k组数据 for(int i=0;i<k;i++){int w,s;  //w为口袋承重上限,s为金属种类个数 cin>>w>>s;for(int j=1;j<=s;j++){cin>>m[j].n>>m[j].v;m[j].value=m[j].v/m[j].n; //计算单位价值 } sort(m+1,m+s+1,cmp);double t=0; //总价值 for(int k=s;k>=1;k--){if(m[k].n<=w){ //如果金属重量小于口袋上限 t+=m[k].v;  w-=m[k].n;} else{t+=m[k].value*w;break;}} printf("%.2lf\n",t);}return 0;
}

贪心算法——1225:金银岛相关推荐

  1. 基础算法 —— 贪心算法

    [概述] 贪心算法是从问题的初始状态出发,通过若干次的贪心选择而得到的最优值的一种求解策略,即贪心策略. 简单来说,贪心策略是一种在每次决策时采取当前意义下最优策略的算法,做出的选择至少在某种约束条件 ...

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

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

  3. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  4. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  5. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  6. 一份贪心算法区间调度问题解法攻略,拿走不谢

    作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]什么是贪心算法呢?贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法需要满足更多 ...

  7. 漫画:五分钟学会贪心算法!

    假设一个问题比较复杂,暂时找不到全局最优解,那么我们可以考虑把原问题拆成几个小问题(分而治之思想),分别求每个小问题的最优解,再把这些"局部最优解"叠起来,就"当作&qu ...

  8. 下载插件(贪心算法)

    小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回小扣完 ...

  9. Runnable接口和贪心算法

    1 Runnable接口 Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现.设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议.激活的意思是说某个线程已启动并且尚未停止 ...

最新文章

  1. AS 400 常用命令
  2. 何必分个孰优孰劣呢?!
  3. 基于SSH的在线音乐点评网站-java在线音乐点评网站
  4. C# — 通过点击回车执行任务
  5. volatile怎么实现的内存可见?附面试题答案
  6. 线程运行程序c语言,理解线程1 C语言示例的程序
  7. python3 getopt用法
  8. 不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...
  9. C++中的.和::和:和-的区别
  10. python使用minidom读写xml
  11. 怎么查计算机二级证书到没到学校,今年3月份考的全国计算机二级,结果忘记去领证书了,我是在城建学院考的,还会给我留着吗?这证书能补办吗...
  12. 复杂作业车间调度-单机调度问题研究
  13. 【Adobe美术基础】字体安装
  14. matlab 二进制写入文件,在Matlab中读取/写入二进制文件
  15. 蓝天准系统P750的介绍与开箱
  16. dpdk X710 VF reset
  17. Oracle数据库CDB与PDB
  18. 软件架构风格整理(1 数据流风格)
  19. css preserve-3d 使用
  20. 为啥UI设计的值放到android studio中显示不准确?

热门文章

  1. Vue实现顶部导航栏设计
  2. java简单游戏制作教程,使用指南
  3. Javaweb入门基础(尚硅谷,佟刚老师)笔记(一)
  4. python-探索性数据分析-足球赛事数据集
  5. Basler相机调用及图像存储
  6. 互联网+大赛评审规则浅析
  7. nginx-quic
  8. 从阵容再到内容,跨年晚会们重寻“流量密码”
  9. 路由器和交换的本质区别解析
  10. 牛客网前端刷题(三)