zoukankan      html  css  js  c++  java
  • 【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible

    一种方法是二分总时间,复杂度O(nlogn)。

    另外我们可以证明,当所有人同时到达终点的时候,是最优的,因为没有人的时间“浪费”了。

    我们又发现,每个人的运动过程总是两段,要么是走路,要么是坐车。于是每个人的运动都是等价的(坐车的时间也相等,走路的时间也相等)。

    这里借用一下这个推导,懒得写了。

    (http://blog.csdn.net/say_c_box/article/details/52001850)

    根据上面的过程得出d以后,于是有d*(组数-1)+l1=l,然后就可以解出l1,然后l1/v2+(l-l1)/v1就是答案,因为每个人的运动过程相同,我们只需要算第一组人的运动总时间即可。

    #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
    ",l1/v2+(l-l1)/v1);
    	}
    	return 0;
    }
  • 相关阅读:
    JAVA核心技术笔记总结--第14章 线程总结
    java核心技术笔记——第 9 章 集合
    Java核心技术笔记——第 8 章 泛型
    2.面向对象三大特征
    1.浅谈面向对象思想
    8.字符串
    7.数组
    6.调试程序
    5.流程控制语句
    4.运算符
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/7117540.html
Copyright © 2011-2022 走看看