【题目描述】
某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同,分别为n1,n2,…,ns,同时每个种类的金属总的价值也不同,分别为v1,v2,…,vsv1,v2,…,vs。KID想一次带走价值尽可能多的金属,问他最多能带走价值多少的金属。注意到金属是可以被任意分割的,并且金属的价值和其重量成正比。

【输入】
第1行是测试数据的组数k,后面跟着k组输入。

每组测试数据占3行,第1行是一个正整数w(1≤w≤10000),表示口袋承重上限。第2行是一个正整数s(1≤s≤100),表示金属种类。第3行有2s个正整数,分别为n1,v1,n2,v2,…,ns,分别为第一种,第二种,…,第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

//1225:金银岛
#include<iostream>
#include<cstring>
#include<iomanip>
#include<algorithm>//sort函数用到
using namespace std;
struct js //定义结构体,金属
{int zl;//重量int v;//总价值double dj;//单价,每克金属值多少钱
} a[10001];
int k,w,s,i,j,yw;//yw是已经拿了的金属重量和
double zj;//zj是已经拿的所有金属的价值和
bool cmp(js x,js y)
{return x.dj>y.dj;
}
int main()
{cin>>k;while(k>0){memset(a,0,sizeof(a));cin>>w>>s;for(int i=1;i<=s;i++){cin>>a[i].zl>>a[i].v;a[i].dj=(a[i].v*1.0)/a[i].zl;}//对金属进行排序,按照单价从高到低排序//因为拿金属首先拿最值钱的,拿完一种后,再拿剩下的里面最值钱的 sort(a+1,a+1+s,cmp);//这个地方千万不要写错了,起始地址应该是a+1,结束地址是a+1+s yw=0;//初始化已拿的金属总量 zj=0.0;//初始化已拿的金属的价值和 int n=1;//n表示要拿第几种金属 while(yw<w&&n<=s){if(yw+a[n].zl<=w)//第n种金属可以全部拿{yw+=a[n].zl;zj+=a[n].v;      }else//第n种金属只能拿一部分 {zj+=a[n].dj*(w-yw);yw=w;//已经拿到足够的重量的金属了 }n++;}cout<<fixed<<setprecision(2)<<zj<<endl;k--;}return 0;
}

信息奥赛一本通1225:金银岛相关推荐

  1. 信息奥赛一本通的递推练习

    信息奥赛一本通的递推练习 递推与动态规划 1313:位数问题 1314:过河卒 1194:移动路线 1196:踩方格 递推与动态规划 递推解决的问题中满足最优化原理的也是属于动态规划范畴 1313:位 ...

  2. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 提交数: 130     通过数: 68 ...

  3. 信息奥赛一本通 三角形最佳路径问题 (1288) 题解

    信息奥赛一本通 三角形最佳路径问题 (1288) 题解 时间限制: 1000 ms 内存限制: 65536 KB 题目描述 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 ...

  4. 2038:最大数位置(题目来源于信息奥赛一本通官网)

    2038:[例5.5]最大数位置 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 4876     通过数: 3175 [题目描述] 输入n 个整数,存放在数组a[ ...

  5. 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛

    [题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...

  6. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  7. 【算法•日更•第十四期】信息奥赛一本通1592:【例 1】国王题解

    废话不多说,直接上题: 1592:[例 1]国王 时间限制: 500 ms         内存限制: 65536 KB 提交数: 290     通过数: 111 [题目描述] 原题来自:SGU 2 ...

  8. 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数

    1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...

  9. 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)

    1325:[例7.4] 循环比赛日程表 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6257     通过数: 3483 [题目描述] 设有N个选手进行循环比赛 ...

最新文章

  1. centos mysql-5.5.20_centos 下安装mysql5.5.20出现的问题
  2. 怎样提高团队管理能力5
  3. visual studio 2005没有chart空间_彭啸专访:2005年的国少跳级生 天赋+汗水造就成功...
  4. Angular中ngModel的$render的详解
  5. [渝粤教育] 中国地质大学 企业文化建设与管理 复习题
  6. 内部类详解————匿名内部类
  7. 原子操作和互斥锁的区别
  8. mysql truncate很慢_mysql truncate 的问题
  9. 小蚂蚁学习数据结构(26)——题目——输出二叉树上值大于x的算法
  10. Java IO流(精简版)
  11. surfacert能跑java么_不怕天气糟糕 出行全靠Surface来帮忙
  12. 【Kubernetes】Pod学习(五)从Pod到容器:Downward API
  13. uni-app 今天也要努力写项目NO.1
  14. 洛谷1262 间谍网络 tarjan缩点
  15. 我的第一个安卓应用程序_我如何设计我的第一个应用程序
  16. ZOJ4043 : Virtual Singers
  17. 12-监听器实现统计网站当前在线人数
  18. 国际会计准则IAS 和 IFRS
  19. 【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
  20. 五十种语言的“圣诞快乐”(上):分析与实现

热门文章

  1. Sql Server服务远程过程调用失败。[0x800706be]
  2. sql20005 分页存储过程
  3. 利用python-docx设置简单的word文档模板
  4. 基于jwt的token验证、原理及流程
  5. libgdx 环境搭建
  6. 【资料分享】工程师必备物联网资料合集 电子书PDF
  7. 在linux终端下使用scp与远程windows传输文件
  8. 2019.11.2图论专题(AtCoder Splatter Painting、President and Roads、Shortest Cycle、ISlands II)
  9. AlexNet神经网络结构
  10. 亚博智能PS2手柄学习笔记