题目链接:http://codeforces.com/contest/801/problem/C

题意:给出一个充电器每秒钟充p个点,还有n个电器要同时使用a[i]表示第i个电器每秒钟用多少点,b[i]表示第i个

原来存了都少电。充电器可以无缝切换这充电,但是只能给一个充(同一时间)。最后问你最长可用多久,如果可以

无限时间的用的话,就输出-1。

题解:首先确定一下什么时候输出-1也就是可以无限充电的情况,就是p大于所有a的总和就行。

然后就是时间有限的情况。这里明确一个式子。

need*t=a[i]*t-b[i],(need表示每秒需要的时间,t表示时间)然后for一下1~n

need+=(a[i]-b[i]/t)

如果need<=p那么这个时间就是符合的。

然后就是枚举时间,枚举时间可以用二分,不妨设l=0,r=1e10,mid=(l+r)/2。然后就是二分的次数,由于精度要求是

1e-4所以二分50次左右就够了。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 1e5 + 10;
double a[M] , b[M];
int main() {int n;double p;scanf("%d%lf" , &n , &p);double sum = 0;for(int i = 0 ; i < n ; i++) {scanf("%lf%lf" , &a[i] , &b[i]);sum += a[i];}if(sum <= p) {cout << -1 << endl;}else {double l = 0 , r = 1e10;double mid = (l + r) / 2;for(int j = 1 ; j <= 50 ; j++) {mid = (l + r) / 2;double need = 0;for(int i = 0 ; i < n ; i++) {need += max(0.0 , 1.0 * a[i] - b[i] / mid);}if(need <= p) l = mid;else r = mid;}printf("%.10lf\n" , l);}return 0;
}

转载于:https://www.cnblogs.com/TnT2333333/p/6722021.html

Codeforces Round #409 C. Voltage Keepsake(二分+思维)相关推荐

  1. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)C. Voltage Keepsake

    题目链接:C. Voltage Keepsake 题解:二分时间,然后判断看需要充电的时间总和是否在允许的范围内 #include<bits/stdc++.h> #define pb pu ...

  2. Codeforces Round #409 (Div. 2)

    这是一次血崩的cf,脑子不好使了.读题读错...代码写错...查不出错...WAWAWA 这次题比较常规.前二题很简单,第三题二分,第四题数学. A - Vicious Keyboard[暴力模拟] ...

  3. Codeforces Round #658 (Div. 2) D. Unmerge 思维 + 背包

    传送门 文章目录 题意: 思路: 题意: 思路: 我们可以假设有两个桶,让后向里面放数,可以发现,如果向其中放入了aia_iai​,那么紧跟在他后面的所有<ai<a_i<ai​的数都 ...

  4. Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑到最大面积是由四种颜色构成的,且四种颜色可以从中心扩展出去,所以我们分别维护四种颜色的二维前缀和,O(1)O(1)O(1)计算矩阵内颜色的个数.现 ...

  5. Codeforces Round #743 (Div. 2) B. Swaps 思维

    题目地址Codeforces Round #743 (Div. 2) B. Swaps 题意很好懂,这里就不复述了. 思路:因为是要让a小于b,所以可以用双指针,在b数组中找到第一个大于a数组中第i个 ...

  6. Codeforces Round #409 (Div. 2) C Voltage Keepsake(二分)

    题意:有n(n<=100000)个机器...第i个机器最开始有bi(1<=bi <= 100000)个单位的电量,机器可以储存的电量没有上限,启动后每秒消耗ai(1<=ai&l ...

  7. CodeForces - 801C Voltage Keepsake(二分)

    题目链接:点击查看 题目大意:给出n个电器,每个电器每秒钟都需要消耗一定的能量,每个电器初始时储存了一定的能量,现在有一个充电器,可以给任意一个电器充电,问这n个电器最多能运行多久 题目分析:看到这个 ...

  8. CodeForces - 801C Voltage Keepsake 二分

    You have n devices that you want to use simultaneously. The i-th device uses ai units of power per s ...

  9. codeforces 808 E. Selling Souvenirs (dp+二分+思维)

    题目链接:http://codeforces.com/contest/808/problem/E 题意:最多有100000个物品最大能放下300000的背包,每个物品都有权值和重量,为能够带的最大权值 ...

  10. Codeforces Round #587 C. White Sheet(思维+计算几何)

    传送门 •题意 先给一个白矩阵,再两个黑矩阵 如果两个黑矩阵能把白矩阵包含,则输出NO 否则输出YES •思路 计算几何题还是思维题呢? 想起了上初中高中做几何求面积的题 这个就类似于那样 包含的话分 ...

最新文章

  1. Halcon初学者知识:用set_paint直观显示图像的属性
  2. java断言assert初步使用:断言开启、断言使用
  3. 通过100个单词掌握英语语法(四十四)more
  4. eclipse插件安装的方法
  5. 如何设置Linux操作系统shell命令的默认语言
  6. 不管你挣多少钱永远都是问题
  7. 寂寞的hasLayout
  8. 程序员:工作3年了,为啥越来越不值钱……
  9. SVM支持向量机,我用到的自学材料
  10. visual studio 2015 2017 key vs2015 vs2017密钥
  11. 10小时,就能吃透Kafka源码?
  12. Java爬虫爬取微博热搜榜
  13. 大数取模运算Barrett reduction
  14. 字节序——Big Endian和Little Endian
  15. 算法时间复杂度符号分析——O、o、Ω、ω、Θ
  16. 游戏ui设计,游戏ui设计需要学什么
  17. 你知道豆瓣电影是怎么评分的吗?(实战篇—手把手教你分析豆瓣电影)
  18. vue绑定类名 禁用样式
  19. ORCALE DDL,DML,DQL命令
  20. C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。

热门文章

  1. 帮你躲坑:pip install tensorflow 报错怎么办,import tensorflow 报错怎么办?
  2. 初识TensorFlow
  3. testlink配置修改
  4. 1、Python基本对象类型----数字
  5. regsvr32.exe是什么东西
  6. 应如何取B/S的B端的IP
  7. NFS rhel 7
  8. 五、OpenStack安装Nova
  9. springcloud与jdk版本问题
  10. Hbase安装使用与入门学习