nyoj914Yougth的最大化(二分搜索 + 贪心)
Yougth的最大化
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗?
输入
有多组测试数据
每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和Vi。
(1<=k=n<=10000) (1<=Wi,Vi<=1000000)
输出
输出使得单位价值的最大值。(保留两位小数)
样例输入
3 2
2 2
5 3
2 1
样例输出
0.75
来源
Yougth
题解:
Yougth的最大化
这道题目是一道0-1分数规划求最优值。
方法是一个二分搜索+贪心的题目。
出这道题目就是告诉大家二分不仅可以查找,还可以搜索一个更优值。
要使得单位重量的价值最大,则其最大不超过单个中最大的单位重量的价值,最小当然不小于0.
那么我们就这一在0–最大单位重量的价值中间找一个值ans,使得ans为满足题目条件的最大值。如果满足条件,则可以找更大的。设置一个条件。既二分搜索、
从n个物品中找k个使得k个的价值和/质量和>=ans
为了使得ans尽可能的大,那么这里就要贪心选择。
代码详见:
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = ;
int w[N],v[N];
double y[N];
int n,c;
int chack(double x)
{
for(int i=;i<n;i++)
{
y[i]=v[i]-x*w[i];
}
sort(y,y+n);
double sum=;
for(int i=;i<c;i++)
{
sum+=y[n-i-];
}
return sum>=;
}
double reaerch(double enf)
{
double l=,r=enf,mid;
for(int i=;i<;i++)
{
mid=(l+r)/;
if(chack(mid))
l=mid;
else
r=mid;
}
return l;
}
int main()
{
while(~scanf("%d%d",&n,&c))
{
double ma=;
for(int i=;i<n;i++){
scanf("%d%d",&w[i],&v[i]);
double cmp=v[i]/w[i];
if(cmp>ma)
ma=cmp;
}
printf("%.2lf\n",reaerch(ma));
}
return ;
}
nyoj914Yougth的最大化(二分搜索 + 贪心)的更多相关文章
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- NYOJ-914 Youth的最大化(贪心)
Youth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? ...
- nyoj914(二分搜索+贪心)
题目意思: pid=914">acm.nyist.net/JudgeOnline/problem.php?pid=914 如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k ...
- POJ 3258 最小值最大化 二分搜索
题意:牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值. ...
- nyoj--914--Yougth的最大化(二分查找)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...
- 问题 L: Yougth的最大化
题目描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? 输入 有多组测试数据 每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和V ...
- ACM 疯牛
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小 ...
- hdu 3 * problem
hdu 6182 给出 $n$ 求 $\sum_{i = 1} ^ {\infty} (i * i <= n)$ 暴力枚举 hdu 6186 给出 $n$ 个数 $1e6$ 次询问,每次询问这 ...
- POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)
POJ 2456 题意 农夫约翰有N间牛舍排在一条直线上,第i号牛舍在xi的位置,其中有C头牛对牛舍不满意,因此经常相互攻击.需要将这C头牛放在离其他牛尽可能远的牛舍,也就是求最大化最近两头牛之间的距 ...
随机推荐
- OpenLayers 项目完整分析——(二)源代码总体结构分析
转自:http://www.cnblogs.com/lzlynn/archive/2008/07/29/1255848.html 二)源代码总体结构分析 通过前面的项目介绍,我们大概已经知道Openl ...
- [liu yanling]常用的测试工具
常用的测试工具 1. 功能测试工具——QTP 2. 性能测试工具——LoadRunner 3. 测试管理工具——TestDirector 4. 白盒测试工具——Nunit,Junit,C++Test, ...
- 查询显示MSSQL表结构 [转]
SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...
- [HZWER]藏妹子之处
问题描述 今天CZY又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格.但要满足如下的两个条件: (1)任意两个单元格都不在同一 ...
- PHP使用SwiftMailer发送邮件
用到了swiftmailer 的lib库 官方网址:http://swiftmailer.org/ require_once 'lib/swift_required.php';//给我发送邮件func ...
- hive0.11的编译/安装/配置
一.获取hive 0.11文件 1.直接在apache网站下载release版 2.自己下载源码编译.方法: git clone https://github.com/amplab/hive.git ...
- HW5.3
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- C# WinForm多线程(三)---- Control.Invoke[转]
开发中遇到更新Winform中控件假死问题,通过看了这篇文章了解了原理,感谢!此处标记起来,以备查看! 原文地址:http://www.cnblogs.com/joechen/archive/2009 ...
- 问题-[VMware Workstation]断电后,重启电脑,之后就提示“内部错误”
问题现象:突然断电后,重启电脑,再打开VMware Workstation,启动不了.之后就提示“内部错误”.问题原因:希望高人指点.问题处理:关闭VMware Workstation,在快捷方式上, ...
- Android文字的阴影效果
<!-- android:shadowDx 阴影的水平偏移量 即往右移的距离 --> <!-- android:shadowDy 阴影的垂直偏移量 即往下移的距离--> < ...