zoukankan      html  css  js  c++  java
  • Codeforces Round #364 As Fast As Possible

    二分思想,对所要花费的时间进行二分,再以模拟的形式进行验证是否可行。

    使用二分法,可以将一个求最优解的问题转化为一个判定问题,优雅的暴力。

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<map>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<utility>
    using namespace std;
    typedef long long LL;
    const int N = 1008, INF = 0x3F3F3F3F;
    #define MS(a, num) memset(a, num, sizeof(a))
    #define PB(A) push_back(A)
    #define FOR(i, n) for(int i = 0; i < n; i++)
    int n, k;
    double dis, v1, v2;
    
    
    bool check(double m){
    	double ti = 0;
    	int tot = n / k;
    	if(n % k){
    		tot++;
    	}
    	for(int i = 0; i < tot; i++){
    		double rem = dis - ti * v1;
    		if(rem <= (m - ti) * v1){
    			return true;
    		}
    		double len = v1 * (m - ti);
    		double t2 = (rem - len) / (v2 - v1);
    		ti += t2;
    		if(i != tot - 1){
    			double l2 = rem - len;
    			ti += l2 / (v1 + v2);
    		}
    		if(ti > m){
    			return false;
    		}
    
    	}
    	return true;
    }
    int main(){
        cin>>n>>dis>>v1>>v2>>k;
        if(k >= n){
        	printf("%.10f
    ", dis / v2);
        }else{
        	double l = dis / v2;
        	double r = dis / v1;
    
        	for(int i = 0; i < 100; i++){
        		double m = (l + r)/2;
        		if(check(m)){
        			r = m;
        		}else{
        			l = m;
        		}
        	}
        	printf("%.10f
    ", l);
       	}
    
        return 0;
    }
    

      

  • 相关阅读:
    linux初始化宏__init, __exit
    linux内核initcall
    常用命令合集
    df
    ln
    cat
    grep
    find
    IE11浏览器传时间格式不兼容,c.a.d.c.advice.AdcDaBaseExceptionAdvice : JSON parse error
    js 图片不保存的回显功能/图片尺寸验证/图片大小验证 /图片类型验证
  • 原文地址:https://www.cnblogs.com/IMGavin/p/5742636.html
Copyright © 2011-2022 走看看