780B - The Meeting Place Cannot Be Changed

 

思路:

  二分答案;

 

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

#define eps 1e-7
#define INF 1e18
#define maxn 60005

int n;

double xi[maxn],sp[maxn];

bool check(double ti)
{
    double l=-INF,r=INF;
    for(int i=1;i<=n;i++)
    {
        l=max(l,xi[i]-sp[i]*ti);
        r=min(r,xi[i]+sp[i]*ti);
    }
    if(l<=r) return true;
    else return false;
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%lf",&xi[i]);
    for(int i=1;i<=n;i++) scanf("%lf",&sp[i]);
    double l=0,r=1e9,ans;
    while(l<=r)
    {
        double mid=(l+r)/2.0;
        if(check(mid)) r=mid-eps,ans=mid;
        else l=mid+eps;
    }
    printf("%.7lf",ans);
    return 0;
}

 

相关文章:

  • 2021-08-25
  • 2021-09-11
  • 2022-01-22
  • 2022-02-06
  • 2021-05-30
  • 2021-05-25
  • 2021-11-17
  • 2022-03-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-11-11
  • 2022-03-01
  • 2022-12-23
相关资源
相似解决方案