题意

给出数列 a a a和 b b b,在里面选取 k k k个,使得 ∑ a i / ∑ b i \sum a_i/\sum b_i ∑ai​/∑bi​最大。

思路

我们可以设答案为 a n s ans ans,就是
∑ a i / ∑ b i = a n s \sum a_i/\sum b_i=ans ∑ai​/∑bi​=ans
那么 ∑ a i = ∑ b i ∗ a n s \sum a_i=\sum b_i*ans ∑ai​=∑bi​∗ans
所以 ∑ ( a i − b i ∗ a n s ) = 0 \sum (a_i-b_i*ans)=0 ∑(ai​−bi​∗ans)=0
然后因为我们选或不选会改变答案的大小,所以我们可以发现这是有单调性的,所以我们可以二分答案,然后判断选中的这些数是否能满足条件。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>int n, k;
int a[100001], b[100001];
double c[100001];int check(double x) {memset(c, 0, sizeof(c));for (int i = 1; i <= n; i++)c[i] = a[i] - b[i] * x;std::sort(c + 1, c + 1 + n);double s = 0;for (int i = n; i > n - k; i--)s += c[i];return s >= 0;
}int main() {scanf("%d %d", &n, &k);for (int i = 1; i <= n; i++)scanf("%d", &a[i]);for (int i = 1; i <= n; i++)scanf("%d", &b[i]);double l = 1e-5, r = 1000;while (l + 1e-5 < r) {double mid = (l + r) / 2;if (check(mid)) l = mid;else r = mid;}printf("%.3lf", l);
}

【二分 数学 0/1分数规划】JZOJ_4230 淬炼神体相关推荐

  1. 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环

    首页 新随笔 联系 管理 订阅 随笔- 20  文章- 0  评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...

  2. jzoj4017-逃跑【0/1分数规划,线段树,dp】

    正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n+1n+1n+1个连续的地方,每个地方有(a,b,c)(a,b,c)(a,b,c) ...

  3. jzoj3852-单词接龙【0/1分数规划,负环】

    正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...

  4. [学习笔记]0/1分数规划

    对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...

  5. #0/1分数规划,SPFA,负环#洛谷 1768 天路

    题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...

  6. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...

  7. 2019.1.20【NOIP提高组】模拟B组 JZOJ 4230 淬炼神体

    D e s c r i b e Describe Describe 给定 n n n个点,每个点都有两个值-- a i a_i ai​和 b i b_i bi​,现试从中选出 k k k个点,使得 ∑ ...

  8. POJ2976——Dropping tests(0/1分数规划)

    传送门 最简单的分数规划 对于最终答案ans,有 ans=Σai∗100Σbians=\frac{Σa_i*100}{Σb_i}ans=Σbi​Σai​∗100​ 则 Σbi∗ans=Σai∗100Σ ...

  9. [JSOI2016] 最佳团体(0/1分数规划 + 树形dp)

    problem luogu-P4322 solution 假设每个人是否被招募,用 xi={0,1}x_i=\{0,1\}xi​={0,1} 代替,max⁡∑pi∗xi∑si∗xi\max\frac{ ...

最新文章

  1. 干货 | YOLOV5 训练自动驾驶数据集,并转Tensorrt,收藏!
  2. oracle创建序列seq起始值为1_oracle 重置序列从指定数字开始的方法详解
  3. OpenGL: 3D坐标到屏幕坐标的转换逻辑(gluProject的实现)(转)
  4. linux的内核是指的什么,[科普] Linux 的内核与 Linux 系统之间的关系
  5. redis过期策略和淘汰机制你知道多少?
  6. Qt在linux下无法输入中文,Ubuntu使用集成开发环境QT无法输入中文的解决方法
  7. 电路维修(信息学奥赛一本通-T1448)
  8. 【Java6学习笔记】多线程编程中使用volatile保障原子性
  9. 《Metasploit渗透测试手册》—第3章3.5节在Windows 2003 Server上进行渗透测试
  10. Retinex算法介绍
  11. 2019年“深圳杯”数学建模挑战赛B题解题思路(一)
  12. matlab画频谱图
  13. 什么是激光导航扫地机器人?
  14. 21.0425开课吧开课前学习
  15. 微信小程序旋转动画,图片转动view旋转等
  16. C. The Intriguing Obsession[组合数学]
  17. 流放者柯南rust_《流放者柯南》评测8.0分 胯下生风的沙盒生存游戏
  18. [W ParallelNative.cpp:212] Warning: Cannot set number of intraop threads after parallel work h
  19. ArangoDB数据库——AQL常用函数(一)
  20. 金山办公:订阅为王?

热门文章

  1. 内核裁剪和部分选项的意义
  2. 使用java命令出现Error: A JNI error has occurred
  3. 【云原生】基于Kubernetes开发的阿里云ACK之可观测监控
  4. 【工具】FastStone Capture(FSCapture) 注册码
  5. AVALON-MM接口
  6. BIOTIN-PEG-NH2,生物素-聚乙二醇-氨基科研试剂简介,Biotin-PEG-Amine
  7. 找到目标用户,提炼用户画像
  8. 空中网的logo变成了俏江南
  9. 江南爱窗帘十大品牌 教你穿好窗帘这件外衣
  10. 单源最短路径/最小生成树