问题 L: Yougth的最大化
题目描述
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的最大化的更多相关文章
- NYOJ 914 Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 Yougth如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- ACM Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- Yougth的最大化(好题,二分查找 0 1分数规划)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- NYIST 914 Yougth的最大化
Yougth的最大化时间限制:1000 ms | 内存限制:65535 KB难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? ...
- NYOJ 914 Yougth的最大化【二分/最大化平均值模板/01分数规划】
914-Yougth的最大化 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:4 难度:4 题目描述: Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从 ...
- nyoj914Yougth的最大化(二分搜索 + 贪心)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗 ...
- nyoj--914--Yougth的最大化(二分查找)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最 ...
- 【OCR技术系列之七】端到端不定长文字识别CRNN算法详解
在以前的OCR任务中,识别过程分为两步:单字切割和分类任务.我们一般都会讲一连串文字的文本文件先利用投影法切割出单个字体,在送入CNN里进行文字分类.但是此法已经有点过时了,现在更流行的是基于深度学习 ...
- 解题:USACO14MAR Sabotage
题面 题外话:我的实数二分有什么问题=.= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的 ...
随机推荐
- selenium--常用的获取元素属性
当我们要设计功能测试用例时,一般会有预期结果,有些预期结果测试人员无法通过肉眼进行判断的.因为自动化测试运行过程是无人值守,一般情况下,脚本运行成功,没有异样信息就标识用户执行成功.那怎么才能知道我打 ...
- FastAPI(43)- 基于 pytest + requests 进行单元测试
FastAPI 的单元测试 对于服务端来说,通常会对功能进行单元测试,也称白盒测试 FastAPI 集成了第三方库,让我们可以快捷的编写单元测试 FastAPI 的单元测试是基于 Pytest + R ...
- 【vue】生成接口模拟数据
目录 方案一:自定义模拟数据 Step1 创建json文件 Step2 在 vue.config.js 中配置 Step3 在组件中使用 (方式一) Step3 封装api (方式二) Step4 在 ...
- 我惊了!CompletableFuture居然有性能问题!
你好呀,我是歪歪. 国庆的时候闲来无事,就随手写了一点之前说的比赛的代码,目标就是保住前 100 混个大赛的文化衫就行了. 现在还混在前 50 的队伍里面,稳的一比. 其实我觉得大家做柔性负载均衡那题 ...
- JVM学习笔记——堆
堆 Heap 一个 JVM 只有一个堆,堆也是 Java 内存管理的核心区域.在 JVM 启动时堆被创建,同时大小在启动时已设定好,堆是 JVM 管理最大的一块内存空间,其大小可以调节. 堆的内存空间 ...
- Jekins 插件Extended Choice Parameter显示Json Parameter Type遇到的问题
在jenkins中使用Extended Choice Parameter插件用来显示自定义的多选项,尝试通过groovy script来显示,正常,但查看它的例子,发现它例子中多选是通过类型 Json ...
- 通过Swagger文档生成前端service文件,提升前端开发效率
在企业级的项目开发过程中,一般会采用前后端分离的开发方式,前后端通过api接口进行通信,所以接口文档就显得十分的重要. 目前大多数的公司都会引入Swagger来自动生成文档,大大提高了前后端分离开发的 ...
- css3鼠标悬停图片边框线条动画特效
css3鼠标经过内容区时,边框线条特效效果制作. html: <div class="strength grWidth hidden"> <div class ...
- C#特性知识图谱-二、事件
C#特性知识图谱-二.事件 二.事件 在事件驱动的软件系统中,符合某种预设条件的情形出现是,一个事件就会被触发. 2.1 事件三要素 事件源:激发事件的对象 事件信息:事件本身说携带的信息 事件响应者 ...
- 5个步骤,教你瞬间明白线程和线程安全.md
记得刚来杭州面试的时候,有一家公司的技术总监问了我这样一个问题:你来说说有哪些线程安全的类?我心里一想,这我早都背好了,稀里哗啦说了一大堆. 他又接着问:那你再来说说什么是线程安全?--然后我就GG了 ...