codeforces 701 D. As Fast As Possible(数学题)
Posted Gealo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 701 D. As Fast As Possible(数学题)相关的知识,希望对你有一定的参考价值。
题目链接:http://codeforces.com/problemset/problem/701/D
题意:给你n个人,每个人走路的速度v1,有一辆车速度为v2,每次可以载k个人,总路程为l,每个人只能上一次车,问最少需要多少时间把所有人送到终点
题解:首先要使的时间最短肯定是所有人同时到达终点,那么肯定每人坐车的时间是相同的。
不妨设一下车一趟来回的时间为t,乘车距离为a。可以得到
(l-a)/v1+a/v2=t*(gg-1)+a/v2(意思就是最后一批人乘车到达终点时所有人同时到达终点)
也就是说我们要求的是(l-a)/v1+a/v2,那么就要把a表示出来。
t*v1=a-(t-a/v2)*v2(在车来回的这段时间里剩下的人走了t*v1,(t-a/v2)*v2表示车回来开了多远的路)
结合两个式子可以得到a=l*(v1+v2)/(v1+v2+2*v1(gg-1))
然后就可以得到答案了。
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { int n , l , v1 , v2 , k; scanf("%d%d%d%d%d" , &n , &l , &v1 , &v2 , &k); int gg = n / k + (n % k ? 1 : 0); double a = 1.0 * l * (v1 + v2) / (1.0 * (v1 + v2 + 2 * v1 * (gg - 1))); printf("%.10lf\n" , a / (1.0 * v2) + (1.0 * l - a) / (1.0 * v1)); return 0; }
以上是关于codeforces 701 D. As Fast As Possible(数学题)的主要内容,如果未能解决你的问题,请参考以下文章
codeforces 700a//As Fast As Possible// Codeforces Round #364(Div. 1)
Codeforces #364 (Div. 2) D. As Fa(数学公式推导 或者二分)
CodeForces 701C They Are Everywhere (滑动窗口)
Codeforces 701B. Cells Not Under Attack