Codeforces Round #499 (Div. 2) C. Fly(数学+思维模拟)
1 second
256 megabytes
standard input
standard output
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 aiai tons 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.5tons.
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.
input
2
12
11 8
7 5
output
10.0000000000
input
3
1
1 4 1
2 5 3
output
input
6
2
4 6 3 3 5 6
2 6 3 6 5 3
output
85.4800000000
Note
Let's consider the first example.
Initially, the mass of a rocket with fuel is 2222 tons.
- At take-off from Earth one ton of fuel can lift off 1111 tons of cargo, so to lift off 2222 tons you need to burn 22 tons of fuel. Remaining weight of the rocket with fuel is 2020 tons.
- During landing on Mars, one ton of fuel can land 55 tons of cargo, so for landing 2020 tons you will need to burn 44 tons of fuel. There will be 1616 tons of the rocket with fuel remaining.
- While taking off from Mars, one ton of fuel can raise 88 tons of cargo, so to lift off 1616 tons you will need to burn 22 tons of fuel. There will be 1414 tons of rocket with fuel after that.
- During landing on Earth, one ton of fuel can land 77 tons of cargo, so for landing 1414 tons you will need to burn 22 tons of fuel. Remaining weight is 1212 tons, that is, a rocket without any fuel.
In the second case, the rocket will not be able even to take off from Earth.
题意:
给你飞机初始重量,飞机要在所有机场起飞降落。一开始会携带一定重量的汽油,然后每次飞的过程会消耗掉相应汽油,而每个机场给的值是1吨汽油能让他飞多少。
求一开始最少携带多少汽油。
解题思路:
拿第一组样例来说
11 8
7 5
欲最小,回到起点时候肯定就耗光了汽油,而最后一个待过的机场是 7 机场,因为2*7=12+2,2吨汽油能让他飞14,恰好是飞机重量+耗油重量,依次回推2*8=14+2,16+4=5*4,20+2=11*2
得 x*(a[i]或者b[i])=s+x ,s为下一站油和机身的和,x和具体某个机场的耗油量。
说是数学,其实就是证明下就能发现,无论a[i] b[i]用哪个顺序,最后耗油最小量都一样
再注意点细节,就ok了
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FastRead ios_base::sync_with_stdio(0);cin.tie(0) const int maxn=1e5+;
const int mod=1e9+; int n,a[],b[];
double s;
int main()
{
cin>>n>>s;
int f=;
for(int i=;i<=n;i++) {cin>>a[i];if(a[i]<=) f=;}
for(int i=;i<=n;i++) {cin>>b[i];if(b[i]<=) f=;}
if(f==) { puts("-1");return ; }
double sum=,x;
for(int i=;i<=n;i++)
{
x=s/(a[i]-),s+=x,sum+=x;
x=s/(b[i]-),s+=x,sum+=x;
}
printf("%.10f\n",sum);
return ;
}
Codeforces Round #499 (Div. 2) C. Fly(数学+思维模拟)的更多相关文章
- Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推
本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...
- Codeforces Round #499 (Div. 2) C Fly题解
题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...
- Codeforces Round #499 (Div. 1)
Codeforces Round #499 (Div. 1) https://codeforces.com/contest/1010 为啥我\(\rm Div.1\)能\(A4\)题还是\(\rm s ...
- Codeforces Round #499 (Div. 2)
Codeforces Round #499 (Div. 2) https://codeforces.com/contest/1011 A #include <bits/stdc++.h> ...
- Codeforces Round #499 (Div. 1)部分题解(B,C,D)
Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- 7-27 Codeforces Round #499 (Div. 2)
C. Fly 链接:http://codeforces.com/group/1EzrFFyOc0/contest/1011/problem/C 题型:binary search .math. 题意:总 ...
- Codeforces Round #499 (Div. 2) D. Rocket题解
题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...
- Codeforces Round #304 (Div. 2) D 思维/数学/质因子/打表/前缀和/记忆化
D. Soldier and Number Game time limit per test 3 seconds memory limit per test 256 megabytes input s ...
随机推荐
- 深度学习原理与框架-Alexnet(迁移学习代码) 1.sys.argv[1:](控制台输入的参数获取第二个参数开始) 2.tf.split(对数据进行切分操作) 3.tf.concat(对数据进行合并操作) 4.tf.variable_scope(指定w的使用范围) 5.tf.get_variable(构造和获得参数) 6.np.load(加载.npy文件)
1. sys.argv[1:] # 在控制台进行参数的输入时,只使用第二个参数以后的数据 参数说明:控制台的输入:python test.py what, 使用sys.argv[1:],那么将获得w ...
- VSCode搭建Java开发运行环境
用了一段时间VSCode,觉得还可以,想用VSCode整合不同的开发语言,于是研究了一下利用VSCode搭建Java环境.开发Java程序.网上这方面的帖子有不少,但每人的经历不同,把自己的经历记下来 ...
- [Shell]Bash变量:数值运算及运算符
------------------------------------------------------------------------------------------------- Sh ...
- python学习Day2 python 、pycharm安装及环境变量配置
复习 进制转换:二进制&十六进制转换(从左往右1248机制,每四位二进制对应一位16进制) 二进制&十进制转换 2n-1幂次方相加 十进制到二进制转化 将十进制除以2,把余数记下 ...
- myeclise 安装
安装.破解步骤都在gaobo百度云/工具/开发工具 安装后配置环境变量:
- Lua 和 C++ 交互
step1.搭建好vs和lua相交互的环境: 1.下载一个lua5.3的源码: 2.有Lua_lib.lib这个文件: 3.开始配置: 鼠标放在工程名那: 右键选属性: 把包含目录点开进行编辑: 地址 ...
- java实现两个不同list对象合并后并排序
工作上遇到一个要求两个不同list对象合并后并排序1.问题描述从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序.2.思路从数据库中查询到的数据放到各自list中,先遍历两 ...
- db2常见命令
增加db2top命令的refresh间隔,默认值为2秒,下面的命令就可以每10秒刷新一次: $ db2top -i 10 -d sample 数据库本身太繁忙(dynamic SQL过多).建议增加 ...
- Curator的监听
如果要使用类似Wather的监听功能Curator必须依赖一个jar包,Maven依赖, <dependency> <groupId>org.apache.curator< ...
- mybatis的基础Dao
话不多说,直接贴代码吧,因为很多博客都需要用到这个基础dao,怕大家不好查询. 这个基类主要是使用了泛型,这样我就不必为每一个实体都写一个dao,大大节省了时间.其中sqlSessionTemplat ...