题意:

  有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. HDU 3592 World Exhibition(线性差分约束,spfa跑最短路+判断负环)

    World Exhibition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. (转)CloudStack 安装及使用过程中常见问题汇总

    CloudStack 安装及使用过程中常见问题汇总             在做工程项目中对CloudStack 安装及使用过程中常见的几个问题及如何解决做一个总结.   1.Windows XP虚拟 ...

  3. Oracle 视图view

    在我看来,oracle的视图就是用于将多个表的关联查询结果映射成[临时表],视图与系统表中的数据是实时对应的. 我们可以像操作表的查询一样来操作视图查询. 视图写法: CREATE OR REPLAC ...

  4. springboot mybatis 后台框架平台 集成代码生成器 shiro 权限

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  5. 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包)

    目录 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包) 导论 rugarch 简介 指定一个 \(\text{GARCH}(1, 1)\) 模型 模拟一个 GARCH 过程 拟合 ...

  6. C# Test Encryption and Decryption

    public MainWindow() { InitializeComponent(); Title = getUUID(); string s= httpGet("http://220.1 ...

  7. c# speech 文本转语言

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  8. Exp7 网络欺诈技术防范

    Exp7 网络欺诈技术防范 基础问题回答 1.通常在什么场景下容易受到DNS spoof攻击? 在同一局域网下比较容易受到DNS spoof攻击,攻击者可以冒充域名服务器,来发送伪造的数据包,从而修改 ...

  9. 20155325 Exp9 Web安全基础

    本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击 ...

  10. 20155338 《网络攻防》Exp5 MSF基础应用

    20155338 <网络攻防>Exp5 MSF基础应用 基础问题回答 1. 用自己的话解释什么是exploit,payload,encode? exploit将真正要负责攻击的代码传送到靶 ...