OpenJudge 2795 金银岛
1.链接地址:
http://bailian.openjudge.cn/practice/2795/
2.题目:
- 总Time Limit:
- 3000ms
- Memory Limit:
- 65536kB
- Description
- 某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同,分别为n1, n2, ... , ns,同时每个种类的金属总的价值也不同,分别为v1,v2, ..., vs。KID想一次带走价值尽可能多的金属,问他最多能带走价值多少的金属。注意到金属是可以被任意分割的,并且金属的价值和其重量成正比。
- Input
- 第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)。
- Output
- k行,每行输出对应一个输入。输出应精确到小数点后2位。
- Sample Input
2
50
4
10 100 50 30 7 34 87 100
10000
5
1 43 43 323 35 45 43 54 87 43- Sample Output
171.93
508.00
3.思路:
贪心问题,主要要注意qsort的时候不能直接相减返回,要注意精度
4.代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath> using namespace std; struct METAL
{
double price;
int total;
int weight;
}; int cmp(const void* a,const void *b)
{
METAL metal_a = *((METAL *)a);
METAL metal_b = *((METAL *)b); if(metal_b.price > metal_a.price) return ;
else if(metal_b.price == metal_b.price) return ;
else return -;
} int main()
{
//freopen("C://input.txt","r",stdin); int i; int k;
cin >> k; while(k--)
{
int w;
int s;
cin >> w >> s; METAL *arr_metal = new METAL[s]; for(i = ; i < s; ++i)
{
cin >> arr_metal[i].weight >> arr_metal[i].total;
arr_metal[i].price = arr_metal[i].total * 1.0 / arr_metal[i].weight;
} qsort(arr_metal,s,sizeof(METAL),cmp); //for(i = 0; i < s; ++i) cout << arr_metal[i].price << " " << arr_metal[i].weight << endl; double sum = 0.0;
for(i = ; i < s; ++i)
{
if(w > arr_metal[i].weight) {sum += arr_metal[i].total;w -= arr_metal[i].weight;}
else {sum += w * arr_metal[i].price; break;}
} cout.setf(ios::fixed);
cout.precision();
cout << sum << endl; delete [] arr_metal;
} return ;
}
OpenJudge 2795 金银岛的更多相关文章
- 【OpenJ_Bailian - 2795】金银岛(贪心)
金银岛 Descriptions: 某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属.但是他只带着一个口袋,口袋至多只能装重量 ...
- 【OpenJudge 8463】Stupid cat & Doge
http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...
- 【OpenJudge 191】【POJ 1189】钉子和小球
http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...
- 【OpenJudge 1665】完美覆盖
http://noi.openjudge.cn/ch0405/1665/?lang=zh_CN 状压水题,手动转移 #include<cstdio> #include<cstring ...
- 【OpenJudge 1793】矩形覆盖
http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...
- OpenJudge 2990:符号三角形 解析报告
2990:符号三角形 总时间限制: 1000ms 内存限制: 65536kB 描述 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“ ...
- 2795: [Poi2012]A Horrible Poem
2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 484 Solved: 235[Subm ...
- HDU 2795
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2795 线段树问题,线段树的每个叶子节点保存的是当前行还剩余的长度,每次查询找到满足条件的一行减去该条幅的 ...
- OpenJudge 7624 山区建小学
在openjudge似乎无法凭题号搜到题...? 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...
随机推荐
- Jsp中的pageContext对象
这个对象代表页面上下文.组要用于访问页面共享数据.使用pageContext可以直接访问request,session,application范围的属性,看看这些jsp的页面: JSP 页面使用 pa ...
- Linux安装JDK详细步骤
Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- 【Android】 图片编辑:创建圆角图片
创建圆角图片的方式大同小异,最简单的就是 9.png 美工做出来的就是.这种最省事直接设置就可以. 另外一种就是通过裁剪 这里的剪裁指的是依据原图我们自己生成一张新的bitmap,这个时候指定图片的目 ...
- Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C. Weakness and Poorness 三分 dp
C. Weakness and Poorness Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- VPN介绍--虚拟网络
VPN属于远程访问技术,简单地说就是利用公网链路架设私有网络.例如 公司员工出差到外地,他想访问企 原理 业内网的 服务器资源,这种访问就属于远程访问.怎么才能让外地员工访问到内网资源呢?VPN的 ...
- 一个 Android 任务队列的实现
最近在做Android项目时遇到这样一个问题:客户端向服务器请求数据,而在网络信号太差的情况下,数据迟迟不到,甚至丢失.服务器为了解决这个问题做了频繁的重发,android 客户端就会收到很多不想要的 ...
- iOS开发——高级技术&支付宝功能的实现
支付宝功能的实现 现在不少app内都集成了支付宝功能 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(seller) (这个 ...
- 使用air进行移动app开发常见功能和问题(二)
1. Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: if(NetworkInfo.isSupported)//只有android支持 Networ ...
- Linux PAM&&PAM后门
Linux PAM&&PAM后门 我是壮丁 · 2014/03/24 11:08 0x00 PAM简介 PAM (Pluggable Authentication Modules )是 ...
- slave_net_timeout
http://blog.csdn.net/lwei_998/article/details/46864453