题目描述

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
 1 /*解题思路:
2
3 这道题目是一道0-1分数规划求最优值。方法是一个二分搜索+贪心的题目。
4
5 出这道题目就是告诉大家二分不仅可以查找,还可以搜索一个更优值。
6
7 要使得单位重量的价值最大,则其最大不超过单个中最大的单位重量的价值,最小当然不小于0.
8
9 那么我们就在这0--最大单位重量的价值中间找一个值ans,使得ans为满足题目条件的最大值。
10 如果满足条件,则可以找更大的。设置一个条件。既二分搜索、从n个物品中找k个使得k个的价值和/质量和>=ans
11 为了使得ans尽可能的大,那么这里就要贪心选择。*/
12
13 #include<cstdio>
14 #include<algorithm>
15
16 using namespace std;
17 const int N = 11000;
18 int w[N], v[N];
19 double y[N];
20 int n, k;
21 int chack(double x) {
22 for(int i = 0; i < n; i++) {
23 y[i] = v[i] - x * w[i];
24 }
25 sort(y, y + n);
26 double sum = 0;
27 for(int j = 0; j < k; j ++) {
28 sum += y[n - j - 1];
29 }
30 return sum >= 0;
31 }
32
33 double reaerch(double enf) {
34 double l = 0, r = enf, mid;
35 for(int i = 0; i < 100; i++) {
36 mid = (l + r) / 2;
37 if(chack(mid))
38 l = mid;
39 else
40 r = mid;
41 }
42 return l;
43 }
44
45 int main( ) {
46 while(scanf("%d%d", &n, &k) != EOF) {
47 double ma = 0;
48 for(int i = 0; i < n; i ++) {
49 scanf("%d%d", &w[i], &v[i]);
50 double cmp = v[i] / w[i];
51 if(cmp > ma)
52 ma = cmp;
53 }
54 printf("%.2lf\n", reaerch(ma));
55 }
56 return 0;
57 }

问题 L: Yougth的最大化的更多相关文章

  1. NYOJ 914 Yougth的最大化

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 Yougth如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...

  2. ACM Yougth的最大化

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...

  3. Yougth的最大化(好题,二分查找 0 1分数规划)

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...

  4. NYIST 914 Yougth的最大化

    Yougth的最大化时间限制:1000 ms | 内存限制:65535 KB难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? ...

  5. NYOJ 914 Yougth的最大化【二分/最大化平均值模板/01分数规划】

    914-Yougth的最大化 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:4 难度:4 题目描述: Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从 ...

  6. nyoj914Yougth的最大化(二分搜索 + 贪心)

    Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗 ...

  7. nyoj--914--Yougth的最大化(二分查找)

    Yougth的最大化 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...

  8. 【OCR技术系列之七】端到端不定长文字识别CRNN算法详解

    在以前的OCR任务中,识别过程分为两步:单字切割和分类任务.我们一般都会讲一连串文字的文本文件先利用投影法切割出单个字体,在送入CNN里进行文字分类.但是此法已经有点过时了,现在更流行的是基于深度学习 ...

  9. 解题:USACO14MAR Sabotage

    题面 题外话:我的实数二分有什么问题=.= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的 ...

随机推荐

  1. Fiddler抓HTTPS接口数据,安装证书并不复杂,超详细的图文解说,不信你看!

    @ 目录 前言 安装环境 配置网络 IP 端口 配置网络 浏览器打开下载链接 下载证书 安装证书 证书安装坑 前言 抓包是我测试工作中必须要学会的一个工具,我们都知道,抓取HTTPS接口里需要安装证书 ...

  2. Mybatis逆向工程和新版本MybatisPlus3.4逆向工程的使用

    Mybatis和MybatisPlus3.4的使用 目录 Mybatis和MybatisPlus3.4的使用 1 RESTFUL 2 逆向工程 2.1 tkMybatis逆向工程 2.1.1 导入依赖 ...

  3. C# 显示、隐藏窗口对应的任务栏

    WPF中全屏窗口,会自动隐藏任务栏. 那非全屏窗口如何隐藏任务栏?甚至有没有一种场景,隐藏任务后自定义一套系统任务栏来显示? 以下会分阶段讲述一些概念 1. 主屏任务栏 任务栏,其实也是一个窗口,主屏 ...

  4. Redis5种常用数据类型的使用以及内部编码

    String 字符串类型是redis的最基本类型,首先无论值是什么数据类型,其键都是字符串,且其他数据类型的数据结构都是在字符串的基础上搭建的,相信读者能够体会到字符串在redis的地位是有多么的重要 ...

  5. JS中call,apply,bind的区别

    1.关于this对象的指向,请看如下代码 var name = 'jack'; var age = 18; var obj = { name:'mary', objAge:this.age, myFu ...

  6. 12c slience dbca ORA-27125

    问题:12c slience dbca ORA-27125 解决办法:网上大部分方法是把dba组放在内核的,没有效果,可以尝试google找到一位大神的方案,成功解决https://oracle-ad ...

  7. 题解 AVL 树

    link Description 给出一个 \(n\) 个点的 AVL 树,求保留 \(k\) 个点使得字典序最小. \(n\le 5\times 10^5\) Solution 因为我很 sb ,所 ...

  8. FastAPI 学习之路(十五)响应状态码

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. SharkCTF2021 Babyhttp && get_or_lose

    两道web. Babyhttp: 直接dirsearch,发现同时存在git和bak泄露:经验证,git的没用. 访问index.php.bak, 下载源码: 抓包,改包,发包即可. get_or_l ...

  10. ORA-19815: WARNING: db_recovery_file_dest_size闪回区爆满问题处理

    问题描述:有一个数据库起不来了,根据层层排查,是因为归档设置在了闪回区,文件的大小已经超出了闪回区限制.最后直接给数据库拖挂 环境:windows server2012 , oracle 19c,单机 ...