题意:火箭经过1到n号星球,并回到1号星球,现在给出每消耗一砘燃油能带起的火箭质量a[i]和b[i],a[i]代表在第i个星球起飞,b[i]代表在第i个星球降落。求出最少消耗的汽油。保证:如果不能完成旅行,那么输出-1,如果有解,那么解一定小于1e9

分析:将答案从0到1e9二分,但是如何判断有没有解呢?我的做法是把1e9带入check函数,但是由于true和false的界线在正确解的附近,所以当1e9是正确解的时候,check函数返回的可能是false。解决方法是,将答案在0到2e9之间二分,如果是无解,那么会将答案二分到2e9,如果解大于1e9,那么我们在最后判断二分的结果是否大于1e9,解比1e9大0.000001也没关系,因为题目给了精度误差,而且true与false的界线与正确解的界线误差是不会大于0.000001的

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000+10;
int n,m;
double a[maxn],b[maxn];
bool check(double x)
{
if(x>=(x+m)/a[1])x-=(x+m)/a[1];
else return false;
for(int i=2;i<=n;i++)
{
if(x>=(x+m)/b[i])x-=(x+m)/b[i];
else return false;
if(x>=(x+m)/a[i])x-=(x+m)/a[i];
else return false;
}
if(x>=(x+m)/b[1])x-=(x+m)/b[1];
else return false;
return true;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%lf",&a[i]);
for(int i=1;i<=n;i++)
scanf("%lf",&b[i]);
double st=0,en=2e9;
for(int i=1;i<=100;i++)
{
double md=(st+en)/2;
if(check(md))en=md;
else st=md;
}
if(st<1e9+0.000001)
printf("%.12f\n",st);
else
printf("-1\n");
return 0;
}

  

codeforces#1011C. Fly (二分,注意精度)的更多相关文章

  1. Codeforces 1011C Fly(二分+模拟)

    题意: 是有n个星球,1代表地球,然后输入一个m表示火箭的重量,然后输入了两组n个数,第一组表示在每个星球起飞时消耗一吨燃料的质量数,a[i]就表示每a[i]吨就要消耗1吨燃料,第二组就表示在每个星球 ...

  2. codeforces 1165F1/F2 二分好题

    Codeforces 1165F1/F2 二分好题 传送门:https://codeforces.com/contest/1165/problem/F2 题意: 有n种物品,你对于第i个物品,你需要买 ...

  3. CodeForces 163B Lemmings 二分

    Lemmings 题目连接: http://codeforces.com/contest/163/problem/B Descriptionww.co As you know, lemmings li ...

  4. codeforces 732D(二分)

    题目链接:http://codeforces.com/contest/732/problem/D 题意:有m门需要过的课程,n天的时间可以选择复习.考试(如果的d[i]为0则只能复习),一门课至少要复 ...

  5. CodeForces 359D (数论+二分+ST算法)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...

  6. HDU 1007 Quoit Design(二分+浮点数精度控制)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. POJ 1064 Cable master(二分查找+精度)(神坑题)

    POJ 1064 Cable master 一开始把 int C(double x) 里面写成了  int C(int x) ,莫名奇妙竟然过了样例,交了以后直接就wa. 后来发现又把二分查找的判断条 ...

  8. UVA 10341 Solve It 解方程 二分查找+精度

    题意:给出一个式子以及里面的常量,求出范围为[0,1]的解,精度要求为小数点后4为. 二分暴力查找即可. e^(-n)可以用math.h里面的exp(-n)表示. 代码:(uva该题我老是出现Subm ...

  9. CodeForces - 589A(二分+贪心)

    题目链接:http://codeforces.com/problemset/problem/589/F 题目大意:一位美食家进入宴会厅,厨师为客人提供了n道菜.美食家知道时间表:每个菜肴都将供应. 对 ...

随机推荐

  1. js for循环删除两个数组相同元素

    var id = ['a','b','c','a','d','a','a','b','d','c','a','b','c','a','b','c'] var del = ['a','c']; var ...

  2. [Vue] vue跳转外部链接

    问题 vue 跳转外部链接问题,当跳转的时候会添加在当前地址后面 var url = 'www.baidu.com' //跳转1 window.localtion.href = url //跳转2 w ...

  3. Vs Code 插件配置教程

    1 Vs Code 下载地址:https://code.visualstudio.com/ 2   安装好Vs Code,点击启动,点击File-> Open Folder 打开项目 3 点击E ...

  4. [android] 相对布局和单位简介

    /**********************2016年4月23日 更新*******************************/ 知乎:为何Android的默认布局是RelativeLayou ...

  5. localhost和127.0.01 区别

    笔者最近调试程序时遇到的一个问题,localhost不能访问但127.0.0.1可以访问. 一.原理 我估计大多数人都不会去想localhost到底与127.0.0.1有什么不同,就比如我,有时候用h ...

  6. [HTML/CSS]colum-gap属性

    属性定义及使用说明 column-gap的属性指定的列之间的差距. 注意: 如果指定了列之间的距离规则,它会取平均值.   语法 column-gap: length|normal;   值 描述 l ...

  7. C# 正则表达式应用

    正则表达式平时不常用,经常都是用的时候,临时抱佛脚,查文档,然后就是被各种坑之后,才会逐渐熟练. 在线正则表达式测试:http://tool.oschina.net/regex/ 在线JSON格式化: ...

  8. redis的几种数据导入导出方式【转】

    环境说明:202.102.221.11 redis源实例202.102.221.12 redis目标实例202.102.221.13 任意linux系统 一.redis-dump方式 1.安装redi ...

  9. 安装最新nodejs

    # apt-get update # apt-get install -y python-software-properties software-properties-common # add-ap ...

  10. Redis(十一):Redis的事务功能详解

    相关命令 1. MULTI 用于标记事务块的开始.Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列. 这个命令的运行格式如下所示: MULTI 这个命令的返回值 ...