题意:

  有n台机器,第i台机器每个单位时间消耗ai的功率,初始有bi的功率储备,有一个充电器每个单位时间充p单位的功率

  问经过多长时间才能有一个功率位0的机器,如果能够无限使用输出-1;

解析:

  时间是实数范围内,所以可以在任何时刻 给任何一个机器充电

  所以如果p >= sum(a1 + a2 + a3 + ``` + an) 则能无限使用

  如果不能无限使用 那么给所有的机器在不充电的情况下以初始能用多长时间从小到大排序

  那么我们首先肯定要给使用时间最小的机器充电,使它用的时间能够大于等于时间第二小的机器

  如果大于等于了。。。那是不是就要考虑 这两个机器的使用时间 看看能否让它们的使用时间大于等于使用时间第三小的机器 以此类推

  如果到了某个机器不符合了  那么使用时间就为t当前机器 + X  (其中X为在供不应求的情况下还能用多长时间)

  X = pow /(double) (x_p - p)  (其中pow为累计的多余功率, x_p为满足当前机器后每单位时间的消耗功率, p是每单位的充电量)

  x_p 每次累加a就好了(如果可以到达当前机器的时间)

  那pow怎么求。。。。。

  pow += (Node[i+1].t - Node[i].t) * (p - x_p)   就是加上一段时间里充的 减去 消耗的和 每次累加

  

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+, INF = 0x7fffffff;
typedef long long LL;
int n, m, p;
struct node
{
int a, b;
double t;
}Node[maxn]; double cmp(node x, node y)
{
return x.t < y.t;
} int main()
{
cin >> n >> p;
LL sum = ;
for(int i=; i<n; i++)
{
cin >> Node[i].a >> Node[i].b;
Node[i].t = Node[i].b / (double)Node[i].a;
sum += Node[i].a;
}
if(p >= sum)
return puts("-1"), ;
sort(Node, Node+n, cmp); double pow = Node[].t * p, x_p = Node[].a;
double ret = ;
int i, flag = ;
for(i=; i<n-; i++)
{
if(pow + (Node[i+].t - Node[i].t) * p > (Node[i+].t - Node[i].t) * x_p)
pow += (Node[i+].t - Node[i].t) * (p - x_p), x_p += Node[i+].a;
else
{
ret = pow /(double) (x_p - p);
flag = ;
break;
}
}
if(!flag)
ret = pow /(double) (x_p - p);
if(n == )
ret = pow /(double) (x_p - p);
ret += Node[i].t;
printf("%.10f\n", ret); return ;
}

Voltage Keepsake CodeForces - 801C(思维)的更多相关文章

  1. Voltage Keepsake CodeForces - 801C (贪心 || 二分)

    C. Voltage Keepsake time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  2. Voltage Keepsake CodeForces - 801C (思维+二分)

    题目链接 这是一道很棒的二分题. 思路: 首先先思考什么情况下是可以无限的使用,即输出-1. 我们思考可知,如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电,那么这一群设备就可以无限使用. ...

  3. Codeforces Round #409 C. Voltage Keepsake(二分+思维)

    题目链接:http://codeforces.com/contest/801/problem/C 题意:给出一个充电器每秒钟充p个点,还有n个电器要同时使用a[i]表示第i个电器每秒钟用多少点,b[i ...

  4. Codeforces 801C - Voltage Keepsake

    C. Voltage Keepsake 题目链接:http://codeforces.com/problemset/problem/801/C time limit per test 2 second ...

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

    地址:http://codeforces.com/contest/801/problem/C 题目: C. Voltage Keepsake time limit per test 2 seconds ...

  6. Codeforces801C Voltage Keepsake 2017-04-19 00:26 109人阅读 评论(0) 收藏

    C. Voltage Keepsake time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. Codeforces 801C Voltage Keepsake(二分枚举+浮点(模板))

    题目链接:http://codeforces.com/contest/801/problem/C 题目大意:给你一些电器以及他们的功率,还有一个功率一定的充电器可以给这些电器中的任意一个充电,并且不计 ...

  8. 【codeforces 801C】Voltage Keepsake

    [题目链接]:http://codeforces.com/contest/801/problem/C [题意] 有n个设备 你想同时使用 第i个设备每分钟消耗ai点电量,一开始有bi点电量 你有一个充 ...

  9. Codeforces 772A Voltage Keepsake - 二分答案

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

随机推荐

  1. 字典树Trie树

    摘自大佬博客 https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 给出n个单词和m个询问1.查询某个前缀是否出现过2.查询某个单词是否出现过 ...

  2. easyui的datagrid

    datagrid数据的绑定方式: 1)data 后跟数据行的json串 2)url 后跟{"total":,"rows":,"foot":} ...

  3. CAN总线优势

    CAN总线优势 RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性: 首先,CAN控制器工作于多主方式,网络中 的各节点都可根据总线访问优先权(取 ...

  4. 第40章 CAN—通讯实验—零死角玩转STM32-F429系列

    第40章 CAN—通讯实验—零死角玩转STM32-F429系列   第40章     CAN—通讯实验 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视 ...

  5. 一键安装Docker图形化管理界面-Shipyard

    Shipyard是一款开源的图形化的Docker管理工具,记得以前安装很麻烦的,现在官方有了自动安装脚本,使用非常方便.复制.粘贴.使用,就这么简单.先不研究他是如何实现的,安装使用起来再说. $ c ...

  6. 大数据入门第二十五天——logstash入门

    一.概述 1.logstash是什么 根据官网介绍: Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据.转换数据,然后将数据发送到您最喜欢的 “存储库” 中.(我们的存储库 ...

  7. # 20155337《网络对抗》Web基础

    20155337<网络对抗>Exp8 Web基础 实践目标 1. 实践内容 (1).Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写 ...

  8. SQL Server 启动时发生错误1069:由于登录失败而无法启动

    解决方法:    (1). 我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户".    (2). 我的电脑- ...

  9. 使用VS2013和git进行代码管理

    git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...

  10. install opencv 2.4.10 with issue :"nvcc fatal : Unsupported gpu architecture 'compute_11'"

    issue: nvcc fatal   : Unsupported gpu architecture 'compute_11'CMake Error at cuda_compile_generated ...