zoukankan      html  css  js  c++  java
  • Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed(二分)

    题目链接:Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed

    题意:

    一条直线有n个点,每个点有一个速度,然后将全部的点聚在一起,问最少的时间

    题解:

    二分答案,然后O(n)check一下能否聚到一起。

    check:维护一个左右区间,然后对于每个点能到达的左右最大范围,不停的缩小这个区间就行。

     1 #include<bits/stdc++.h>
     2 #define F(i,a,b) for(int i=a;i<=b;++i)
     3 using namespace std;
     4 typedef pair<int,int>P;
     5 const int N=60007;
     6 int n;
     7 P a[N];
     8 int check(double mid)
     9 {
    10     double r=a[1].first+a[1].second*mid;
    11     double l=a[1].first;
    12     F(i,2,n)
    13     {
    14         double tmpr=a[i].first+a[i].second*mid;
    15         double tmpl=a[i].first-a[i].second*mid;
    16         if(tmpl>r)return 0;
    17         if(tmpl>l)l=tmpl;
    18         if(r>tmpr)r=tmpr;
    19     }
    20     return 1;
    21 }
    22 
    23 int main()
    24 {
    25     scanf("%d",&n);
    26     F(i,1,n)scanf("%d",&a[i].first);
    27     F(i,1,n)scanf("%d",&a[i].second);
    28     sort(a+1,a+1+n);
    29     double l=0,r=1e9,mid,ans;
    30     F(i,1,200)
    31     {
    32         mid=(l+r)/2;
    33         if(check(mid))ans=mid,r=mid;
    34         else l=mid;
    35     }
    36     printf("%.7f
    ",ans);
    37     return 0;
    38 }
    View Code
  • 相关阅读:
    VERSIONINFO Resource
    WCF 学习文摘
    hook 学习
    COM 学习
    ActiveX开发
    Word 开发资料集合
    Loops with PL/SQL
    TWain 在 Qt4 中的调用方法
    从 TWAIN 设备中扫描图像
    Qt enum使用总结
  • 原文地址:https://www.cnblogs.com/bin-gege/p/6509475.html
Copyright © 2011-2022 走看看