题目

http://codeforces.com/contest/1011/problem/C

Natasha is going to fly on a rocket to Mars and return to Earth. Also, on the way to Mars, she will land on n−2n−2 intermediate planets. Formally: we number all the planets from 11 to nn. 11 is Earth, nn is Mars. Natasha will make exactly nn flights: 1→2→…n→11→2→…n→1.

Flight from xx to yy consists of two phases: take-off from planet xx and landing to planet yy. This way, the overall itinerary of the trip will be: the 11-st planet →→ take-off from the 11-st planet →→ landing to the 22-nd planet →→ 22-nd planet →→ take-off from the 22-nd planet →→ …… →→ landing to the nn-th planet →→ the nn-th planet →→ take-off from the nn-th planet →→ landing to the 11-st planet →→ the 11-st planet.

The mass of the rocket together with all the useful cargo (but without fuel) is mm tons. However, Natasha does not know how much fuel to load into the rocket. Unfortunately, fuel can only be loaded on Earth, so if the rocket runs out of fuel on some other planet, Natasha will not be able to return home. Fuel is needed to take-off from each planet and to land to each planet. It is known that 11 ton of fuel can lift off aiaitons of rocket from the ii-th planet or to land bibi tons of rocket onto the ii-th planet.

For example, if the weight of rocket is 99 tons, weight of fuel is 33 tons and take-off coefficient is 88 (ai=8ai=8), then 1.51.5 tons of fuel will be burnt (since 1.5⋅8=9+31.5⋅8=9+3). The new weight of fuel after take-off will be 1.51.5 tons.

Please note, that it is allowed to burn non-integral amount of fuel during take-off or landing, and the amount of initial fuel can be non-integral as well.

Help Natasha to calculate the minimum mass of fuel to load into the rocket. Note, that the rocket must spend fuel to carry both useful cargo and the fuel itself. However, it doesn't need to carry the fuel which has already been burnt. Assume, that the rocket takes off and lands instantly.

Input

The first line contains a single integer nn (2≤n≤10002≤n≤1000) — number of planets.

The second line contains the only integer mm (1≤m≤10001≤m≤1000) — weight of the payload.

The third line contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤10001≤ai≤1000), where aiai is the number of tons, which can be lifted off by one ton of fuel.

The fourth line contains nn integers b1,b2,…,bnb1,b2,…,bn (1≤bi≤10001≤bi≤1000), where bibi is the number of tons, which can be landed by one ton of fuel.

It is guaranteed, that if Natasha can make a flight, then it takes no more than 109109 tons of fuel.

Output

If Natasha can fly to Mars through (n−2)(n−2) planets and return to Earth, print the minimum mass of fuel (in tons) that Natasha should take. Otherwise, print a single number −1−1.

It is guaranteed, that if Natasha can make a flight, then it takes no more than 109109 tons of fuel.

The answer will be considered correct if its absolute or relative error doesn't exceed 10−610−6. Formally, let your answer be pp, and the jury's answer be qq. Your answer is considered correct if |p−q|max(1,|q|)≤10−6|p−q|max(1,|q|)≤10−6.

Examples
input
2
12
11 8
7 5
output
10.0000000000
input
3
1
1 4 1
2 5 3
output
-1
input
6
2
4 6 3 3 5 6
2 6 3 6 5 3
output
85.4800000000
题意:
有n个星球,从1飞到n,路径为1->2->3->……->n->1,数组a中a[i]表示从第i个星球起飞一吨燃料可以支持多少重量起飞(飞船重量m和燃料重量总和为总重量), 数组b中b[i]表示降落到第i个星球一吨燃料可以支持多少重量降落(飞船重量m和燃料重量总和为总重量)。
思路:
反向思考,设当前操作需要燃料x吨,除当前燃料所需外飞船总重量为y,当前1吨燃料可以支持的重量为t,则(x+y)/t=x;
所以x=y/(t-1);再进行前一步操作时将y加上x,由此式子也可看出t必须大于1,否则无法完成。
代码:
#include<bits/stdc++.h>
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define NEW(a,b) memset(a,b,sizeof(a))
const double pi=4.0*atan(1.0);
const double e=exp(1.0);
const int maxn=3e6+;
typedef long long LL;
typedef unsigned long long ULL;
//typedef pair<LL,LL> P;
const LL mod=1e9+;
using namespace std;
int a[];
int b[];
int c[];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=;i<n;i++){
scanf("%d",&b[i]);
}
int cnt=;
for(int i=;i<n;i++){
c[cnt++]=a[i];
if(i!=n-){
c[cnt++]=b[i+];
}
else{
c[cnt++]=b[];
}
}//记录操作顺序.
double g=double(m);
double k;
   //反向操作.
for(int i=cnt-;i>=;i--){
if(c[i]<=){
printf("-1\n");
return ;
}
k=g/(double(c[i])-1.0);
g+=k;
}
double ans=g-(double)m;
printf("%.10lf\n",ans);
}

Codeforces Round #499 (Div. 2) C Fly题解的更多相关文章

  1. Codeforces Round #499 (Div. 2) D. Rocket题解

    题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...

  2. Codeforces Round #499 (Div. 2) C. Fly(数学+思维模拟)

    C. Fly time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  3. Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推

    本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...

  4. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  5. Codeforces Round #499 (Div. 1)

    Codeforces Round #499 (Div. 1) https://codeforces.com/contest/1010 为啥我\(\rm Div.1\)能\(A4\)题还是\(\rm s ...

  6. Codeforces Round #499 (Div. 2)

    Codeforces Round #499 (Div. 2) https://codeforces.com/contest/1011 A #include <bits/stdc++.h> ...

  7. Codeforces Round #499 (Div. 1) F. Tree

    Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...

  8. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  9. Codeforces Round #198 (Div. 2)A,B题解

    Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...

随机推荐

  1. sql生成随机不重复字符串 可指定长度

    存储过程: create procedure dbo.GetRandStr () output) AS BEGIN ), ), @ss varchar DECLARE @I INTEGER, @cou ...

  2. spring揭密学习笔记(2)-spring ioc容器:IOC的基本概念

    1. IoC的理念就是,让别人为你服务!2. 其实IoC就这么简单!原来是需要什么东西自己去拿,现在是需要什么东西就让别人送过来.一个生动的示例 3.三种依赖注入的方式 IoC模式最权威的总结和解释, ...

  3. [Lua]内存泄漏与垃圾回收

    参考链接: http://colen.iteye.com/blog/578146 一.内存泄漏的检测 Lua的垃圾回收是自动进行的,但是我们可以collectgarbage方法进行手动回收.colle ...

  4. 不用MathType, 如何在Mac Word中插入公式

    不用MathType, 如何在Mac Word中插入公式 找了好久都找不到MathType的破解版,不得不使用免费清爽的MarkDown编辑工具Typora_for_Mac. 我是很喜欢Typora的 ...

  5. 《算法》第四章部分程序 part 18

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,在有权有向图中寻找环,Bellman - Ford 算法求最短路径,套汇算法 ● 在有权有向图中寻找环 package package01; impo ...

  6. 《算法》第二章部分程序 part 1

    ▶ 书中第二章部分程序,加上自己补充的代码,包括插入排序,选择排序,Shell 排序 ● 插入排序 package package01; import java.util.Comparator; im ...

  7. range和xrange

    在python2.7中range()某个区间后,内存会立即创建区间内的所有数值,严重浪费内存,所以就出现了xrange():每次循环的时候生成一个数值 在python3版本中不存在xrange,只有r ...

  8. springboot retry

    try/catch,while 循环或者定时任务  这样看起来 好  low sping boot  retry , 这样代码更简洁 eg: @Retryable(value= {RemoteAcce ...

  9. PerformCallback(珍藏版)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PerformCallback. ...

  10. 【Source Insight 】之marco学习笔记1

    我们学习编程语言都是从Hello World!,现在我们学习marco也不例外 打开C:\Users\%USERPROFILE%\Documents\Source Insight 4.0\Projec ...