【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible
生活随笔
收集整理的這篇文章主要介紹了
【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一種方法是二分總時(shí)間,復(fù)雜度O(nlogn)。
另外我們可以證明,當(dāng)所有人同時(shí)到達(dá)終點(diǎn)的時(shí)候,是最優(yōu)的,因?yàn)闆]有人的時(shí)間“浪費(fèi)”了。
我們又發(fā)現(xiàn),每個(gè)人的運(yùn)動(dòng)過程總是兩段,要么是走路,要么是坐車。于是每個(gè)人的運(yùn)動(dòng)都是等價(jià)的(坐車的時(shí)間也相等,走路的時(shí)間也相等)。
這里借用一下這個(gè)推導(dǎo),懶得寫了。
(http://blog.csdn.net/say_c_box/article/details/52001850)
根據(jù)上面的過程得出d以后,于是有d*(組數(shù)-1)+l1=l,然后就可以解出l1,然后l1/v2+(l-l1)/v1就是答案,因?yàn)槊總€(gè)人的運(yùn)動(dòng)過程相同,我們只需要算第一組人的運(yùn)動(dòng)總時(shí)間即可。
#include<cstdio> using namespace std; int n,K; double l,v1,v2; int main(){while(scanf("%d%lf%lf%lf%d",&n,&l,&v1,&v2,&K)!=EOF){int zu=n/K+(n%K ? 1 : 0);double l1=l*(v1+v2)/(2.0*v1*((double)zu-1.0)+v1+v2);printf("%.10f\n",l1/v2+(l-l1)/v1);}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/autsky-jadek/p/7117540.html
總結(jié)
以上是生活随笔為你收集整理的【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果公司有“内鬼”!ID被盗后每条只卖1
- 下一篇: MariaDB/MySql 服务消失无法