time limit per test1 second

memory limit per test256 megabytes

inputstandard input

outputstandard output

On vacations n pupils decided to go on excursion and gather all together. They need to overcome the path with the length l meters. Each of the pupils will go with the speed equal to v1. To get to the excursion quickly, it was decided to rent a bus, which has seats for k people (it means that it can’t fit more than k people at the same time) and the speed equal to v2. In order to avoid seasick, each of the pupils want to get into the bus no more than once.

Determine the minimum time required for all n pupils to reach the place of excursion. Consider that the embarkation and disembarkation of passengers, as well as the reversal of the bus, take place immediately and this time can be neglected.

Input

The first line of the input contains five positive integers n, l, v1, v2 and k (1 ≤ n ≤ 10 000, 1 ≤ l ≤ 109, 1 ≤ v1 < v2 ≤ 109, 1 ≤ k ≤ n) — the number of pupils, the distance from meeting to the place of excursion, the speed of each pupil, the speed of bus and the number of seats in the bus.

Output

Print the real number — the minimum time in which all pupils can reach the place of excursion. Your answer will be considered correct if its absolute or relative error won’t exceed 10 - 6.

Examples

input

5 10 1 2 5

output

5.0000000000

input

3 6 1 2 1

output

4.7142857143

Note

In the first sample we should immediately put all five pupils to the bus. The speed of the bus equals 2 and the distance is equal to 10, so the pupils will reach the place of excursion in time 10 / 2 = 5.

题解



数学问题.

最后的时间取决于最后一拨到终点的人的时间.

因此肯定是这样:先将一波人载到终点前的某个位置。

然后这辆车再回来载另外一拨人。然后两拨人(方便起见先假设只要载两次就能载完)同时到达终点。

这样是最优的方案。

可以肯定每个人在车上的时间是相同的,且所有人同时到达终点。

可以这么理解:

假如每个人在车上的时间不同。

最后一波人到终点的时候,假设有人先到了终点则总是可以调整那堆人少坐一会车,最后这波人多做一会车。

最后每个人在车上的时间就是相同的了,且所有人都能够同时到达终点。

同时到达可以这么理解,设所有人在车上经过的路程为g,则 (l-g)/v1 + g/v2为每个人最后到达的时间。如果在车上的时间相同则g相同,那么最后的时间也就相同了(l,v1,v2都是确定的量);

因为所有人在车上的时间是相同的。

则设所有人在车上经过的路程为g,一辆车从接到一波人开始,一直到它返回又接到第二波人的时间间隔为△t;第二拨人原来的位置

为x,等车又返回载它们的时候位置变成x+△t*v1

则有

x+△t*v1=x+g-(△t-g/v2)*v2; ····①

右边的(△t-g/v2)是这辆车接人到一个合适的位置后又往回走的距离;

根据①式可得

△t=(2g)/(v1+v2); ·····②

设r = (n/k)+((n%k)?1:0);

这个r就是这辆车需要载的趟数

则有

△t*(r-1)+g/v2 = (l-g)/v1 + g/v2; ····③

左边是车到达的时间,右边是人到达的时间;

(l-g)/v1就是每波人走路的时间了,g/v则是在车上的时间

右边r-1表示需要往返r-1次,然后最后一次直接把最后一拨人载到终点即可

由③式可得

g= l(v1+v2)/(2*v1(r-1)+v1+v2);

答案就是(l-g)/v1 + g/v2;

#include <cstdio>

int n,k,r;
double l, v1, v2; int main()
{
scanf("%d%lf%lf%lf%d", &n, &l, &v1, &v2, &k);
r = n / k + ((n%k) ? 1 : 0);
double g = (l*(v1 + v2)) / (2 * v1*((r - 1)*1.0) + v1 + v2);
double ans = (l - g) / v1 + g / v2;
printf("%.10lf\n", ans);
return 0;
}

【45.61%】【codeforces 701D】As Fast As Possible的更多相关文章

  1. 【 BowWow and the Timetable CodeForces - 1204A 】【思维】

    题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...

  2. codeforces 701D D. As Fast As Possible(数学)

    题目链接: D. As Fast As Possible time limit per test 1 second memory limit per test 256 megabytes input ...

  3. 【45.65%】【codeforces 560B】Gerald is into Art

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. 【codeforces 750D】New Year and Fireworks

    time limit per test2.5 seconds memory limit per test256 megabytes inputstandard input outputstandard ...

  5. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  6. 【搜索】【并查集】Codeforces 691D Swaps in Permutation

    题目链接: http://codeforces.com/problemset/problem/691/D 题目大意: 给一个1到N的排列,M个操作(1<=N,M<=106),每个操作可以交 ...

  7. 【中途相遇法】【STL】BAPC2014 K Key to Knowledge (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  8. 【链表】【模拟】Codeforces 706E Working routine

    题目链接: http://codeforces.com/problemset/problem/706/E 题目大意: 给一个N*M的矩阵,Q个操作,每次把两个同样大小的子矩阵交换,子矩阵左上角坐标分别 ...

  9. 【数论】【扩展欧几里得】Codeforces 710D Two Arithmetic Progressions

    题目链接: http://codeforces.com/problemset/problem/710/D 题目大意: 两个等差数列a1x+b1和a2x+b2,求L到R区间内重叠的点有几个. 0 < ...

随机推荐

  1. Lucene 查询方式

    QueryParser类 QueryParser类对输入字符串的解析 格    式 含    义 “David” 在默认的字段中检索“David”关键字 “content:David” 在“conte ...

  2. 网站图标——favicon

    首先推荐一个网站图标在线制作工具favicon: 插入图标只需在head中间加入以下代码: <link rel="icon" href="img/favicon.i ...

  3. springMVC easyUI filebox 单个文件上传

    被这个文件上传坑到如今.还是自己技术问题,照着之前extjs项目那边的上传实例,愣是上传不了 到后面就查了下springMVC的文件上传,依照那样搞定了http://blog.csdn.net/jad ...

  4. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

  5. Let's do our own full blown HTTP server with Netty--转载

    原文地址:http://adolgarev.blogspot.com/2013/12/lets-do-our-own-full-blown-http-server.html Sometimes ser ...

  6. 【习题5-5 UVA-10391】Compound Words

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举每一个串的分割点. 看看左右两个串在不在字符串中即可. [代码] #include <bits/stdc++.h> ...

  7. FragmentPagerAdapter和FragmentStatePagerAdapter的差别

    ViewPager同意用户通过左右滑动显示不同页面的数据.而这些页面须要PagerAdapter管理. 经常使用的有FragmentPagerAdapter和FragmentStatePagerAda ...

  8. APK瘦身记,怎样实现高达53%的压缩效果

    作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...

  9. js中json法创建对象(json里面的:相当于js里面的=)

    js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...

  10. 排查一般MySQL性能问题

    排查一般MySQL性能问题,通常要记录下面几项信息: 1.mysql> show processlist; 2.mysql> show engine innodb status\G 3.表 ...