题目大意:

给出 n , a [ ] n,a[] n,a[]和 b [ ] b[] b[],求在满足 ∑ i = 1 n x i = m \sum^{n}_{i=1}x_i=m ∑i=1n​xi​=m时 m a x { ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i } max\{\frac{\sum^{n}_{i=1}a_i\times x_i}{\sum^{n}_{i=1}b_i\times x_i}\} max{∑i=1n​bi​×xi​∑i=1n​ai​×xi​​}。


思路:

0 / 1 0/1 0/1分数规划裸体。
推荐参考《算法竞赛进阶指南》 P 181 P181 P181。
随便取一个数 L L L,判断是否有一组 x [ ] x[] x[]满足 ∑ i = 1 n ( a i − L × b i ) ≥ L \sum^{n}_{i=1}(a_i-L\times b_i)\geq L ∑i=1n​(ai​−L×bi​)≥L。
若有,那么变形得 ( ∑ i = 1 n a i × x i ) − L × ( ∑ i = 1 n b i × x i ≥ 0 ) (\sum^{n}_{i=1}a_i\times x_i)-L\times(\sum^{n}_{i=1}b_i\times x_i\geq 0) (∑i=1n​ai​×xi​)−L×(∑i=1n​bi​×xi​≥0)。则 ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i ≥ L \frac{\sum^{n}_{i=1}a_i\times x_i}{\sum^{n}_{i=1}b_i\times x_i}\geq L ∑i=1n​bi​×xi​∑i=1n​ai​×xi​​≥L。
所以答案就不小于 L L L,否则答案就小于 L L L。
那么就二分 L L L,知道精度小于 1 0 − 3 10^{-3} 10−3为止。


代码:

#include <cstdio>
#include <algorithm>
using namespace std;const int N=100010;
int n,m;
double l,r,mid;struct node
{int a,b;double s;
}a[N];bool cmp(node x,node y)
{return x.s>y.s;
}bool check()  //判断最大的m个之和是否大于L
{double sum=0.0;for (int i=1;i<=m;i++)sum+=a[i].s;return sum>=0;
}int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)scanf("%d",&a[i].a);for (int i=1;i<=n;i++)scanf("%d",&a[i].b);l=0.0001;r=20000.0;while (r-l>=0.0001)  //二分L{mid=(l+r)/2.0;for (int i=1;i<=n;i++)a[i].s=(double)a[i].a/mid-(double)a[i].b;sort(a+1,a+1+n,cmp);if (check()) l=mid;else r=mid;}printf("%0.3lf\n",l);return 0;
}

【JZOJ4230】淬炼神体【数论,数学】【二分】相关推荐

  1. jzoj4230. 【五校联考4day1】淬炼神体(B组——Day3)

    jzoj4230. [五校联考4day1]淬炼神体 题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一 ...

  2. [jzoj 4230] 淬炼神体{ 0/1分数规划+二分答案}

    题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一阵眩晕过后,仙女发现自己来到了一个浮岛上,四周的半空 ...

  3. 亿些模板【数论数学】

    文章目录 前言 数论数学模板 GCD exgcd 快速幂 线性推逆元 线性推逆元(非连续) 逆元求组合数 矩阵乘法 线性筛素数-埃氏筛 线性筛素数-线性筛 线性筛欧拉-埃氏筛 线性求欧拉 龟速乘 FF ...

  4. 男神体 骚包体 快乐体 手拙体 好身体(haha),你知道这些字体的英文名字吗?

    脑门儿 最近准备建一个网站,于是特别留意网页上那些勾魂儿的元素. 除了版面设计和配色方案之外,字体也是勾魂儿利器之一,尤其是Slogan和标题的字体. 全球著名平面设计师Robin Williams在 ...

  5. 878. 第 N 个神奇数字 数学+二分

    878. 第 N 个神奇数字 一个正整数如果能被 a 或 b 整除,那么它是神奇的. 给定三个整数 n , a , b ,返回第 n 个神奇的数字.因为答案可能很大,所以返回答案 对 109 + 7  ...

  6. 关于set的自定义比较函数的使用及结构体的上下二分用法

    如果set的类型是个结构体 我们需要定义重载函数 ***set 容器模版需要3个泛型参数,如下: template <class Key,class Compare = less <key ...

  7. noip2017考前基础复习——数论数学

    ·最大公约数 gcd 辗转相除法  gcd(a,b)=gcd(b,a%b) 1 int gcd(int x,int y){ 2 if(y==0) return x; 3 return gcd(y,x% ...

  8. hdu 4430 Yukari's Birthday (简单数学 + 二分)

    Problem - 4430 题意是,给出蜡烛的数量,要求求出r和k,r是蜡烛的层数,k是每一层蜡烛数目的底数. 开始的时候,没有看清题目,其实中间的那根蜡烛是可放可不放的.假设放置中间的那根蜡烛,就 ...

  9. 洛谷P7361:拜神(SA、二分、主席树、启发式合并)

    解析 很好的一道SA的题.(觉得完全可以评黑了啊qwq) 我一开始拿SAM和线段树硬做,不断修正最后发现自己无法在可接受复杂度内解决的问题,直接GG- 垃圾数据还骗到了50分 所以写一道题之前还是要先 ...

最新文章

  1. 亿级商城促销系统架构设计与实践
  2. python程序员发展-2018年,程序员对Python有着这些期待!
  3. 【转载】Apache Spark Jobs 性能调优(二)
  4. 【科技金融】某平台互金产品设计流程和运营策略
  5. 修改注册表 为右键添加快捷命令
  6. 对比学习可以使用梯度累积吗?
  7. opengl加载显示3D模型RAW类型文件
  8. 传统公司部署OpenStack(t版)简易介绍(六)——neutron模块部署
  9. mysql命令速查手册
  10. cydia多开微信_cydia怎么安装微信
  11. [英文邮件] 感谢信的标题
  12. 【无标题】Windows10安全中心永久关闭教程
  13. 【自动驾驶】浅谈自动驾驶在业界的发展
  14. Unity3D场景转换效果
  15. 0x3f3f3f3f_《羊卓的杨的算法笔记》_Quentin
  16. 8086芯片寄存器简介
  17. 支撑压力(刀哥指标)
  18. Nature子刊 | AI驱动的药物开发是一把双刃剑
  19. ESP32入门基础之ESP32作为 WIFI Station去连接wifi热点
  20. 账号批量注册软件开发启示录

热门文章

  1. javaXML方式传输图片
  2. 如何使用Linux下的dhclient获取IPv6地址
  3. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解
  4. endnote无法导入文献
  5. Java里Swing的面板练习代码(2)
  6. Java开发:GUI编程
  7. 密码经济:比互联网经济更加安全、高效、自由的数字经济
  8. android vlayout 刷新,Android--vlayout和SmartRefreshLayout的刷新 cannot be cast to
  9. 【算法应用】关于工装检测的理解
  10. 常用的积分方法讨论(数学表达与代码整理)(龙格-库塔、中值积分、欧拉积分)