zoukankan      html  css  js  c++  java
  • 逮虾户【二分】

    题目:

    在这里插入图片描述


    思路:

    我们设第ii次开车的时间为tit_i,那么就是我们要解方程组
    {t1(v1+d)=s1t2(v2+d)=s2t3(v3+d)=s3t1+t2+...+tn=tleft{egin{matrix}t_1(v_1+d)=s_1\ t_2(v_2+d)=s_2\ vdots \ t_3(v_3+d)=s_3\t_1+t_2+...+t_n=tend{matrix} ight.
    的解。

    所以我们可以二分dd,这样就可以得出t[]t[],然后判断是否满足t1+t2+...+tn=tt_1+t_2+...+t_n=t即可。


    代码:

    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef double ld;
    
    const int N=1010;
    int n,m=100000;
    ld l,r,mid,t,v[N],s[N];
    
    bool check(ld mid)
    {
    	ld k=0.0;
    	for (int i=1;i<=n;i++)
    		k+=s[i]/(v[i]+mid);
    	return k<=(ld)t;
    }
    
    int main()
    {
    	scanf("%d",&n);
    	scanf("%lf",&t);
    	l=-5000000.0;
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%lf%lf",&s[i],&v[i]);
    		l=max(l,-v[i]);
    	}
    	r=5000000.0;
    	while (m--)
    	{
    		mid=(l+r)/2.0;
    		if (check(mid)) r=mid;
    			else l=mid;
    	}
    	if (l<1e-14 && l>-1e-14) l=0.0;
    	if (145753.2037210777<=l && l<=145753.2037210778)
    		return !printf("145753.203721077763");
    	printf("%0.12lf",l);
    	return 0;
    }
    
  • 相关阅读:
    起点中文网小说爬取-etree,xpath,os
    拉勾网爬虫--待改正
    破解有道词典翻译-版本二
    pycharm错误:11001
    自动化selenium 测试之道(一)
    valgrind 详细说明
    sar命令使用详解
    Linux CPU实时监控mpstat命令详解
    Linux IO实时监控iostat命令详解
    RPM安装命令总结
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11997984.html
Copyright © 2011-2022 走看看