zoukankan      html  css  js  c++  java
  • CodeForce B. The Meeting Place Cannot Be Changed

    [训练赛] CodeForce B. The Meeting Place Cannot Be Changed

    题目分析

    题意:一个数轴上有不同的人,每个人都有固定的速度,让你找一个点,使得所有人都到达这个点所花费的时间最小

    这是一个二分答案的题。显然要二分答案,用check()判断当前的时间是不是可行时间,如果可行,那么说明答案小于等于可行时间,更新右边界。反之更新左边界。 所以问题就简化成了如何判断二分点是否可行,也就是check()的写法,由于每个人可以向左或向右走,所以每一个时间都对应一个该人的移动范围,只要这个范围有一个共同的交集,那么说明该时间是可行时间。 所以问题又简化成了如何确定每个人的移动范围是否存在交集。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long llu;
    typedef pair<int, int> PII;
    #define W(a) for(int i = 0; i < a; i++)
    #define enl '
    '
    #define pb push_back
    #define gcd(a, b) __gcd(a, b)
    #define io ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
    #define iread(n) scanf("%d", &n)
    #define llread(n) scanf("%lld", &n)
    #define dread(n) scanf("%lf", &n)
    const int N = 60010;
    int n;
    double ans;
    
    struct st{
        ll x; ll v;
    }node[N];
    bool check(double mid){
        double l = node[0].x - node[0].v * mid, r = node[0].x +node[0].x + node[0].v * mid;
        for(int i = 0; i < n; i++){
            l = max(l, node[i].x - node[i].v * mid);
            r = min(r, node[i].x + node[i].v * mid);
            if(r < l) return 0;
        }
        
        return 1;
    }
    double mid;
    int main(){
        // io;
        cin >> n;
        for(int i = 0; i < n; i++) llread(node[i].x);
        for(int i = 0; i < n; i++) llread(node[i].v);
        double minn = 0, maxn = 1e9 + 1000;
        while(maxn - minn >= 0.0000001){
            mid = (maxn + minn) / 2;
            if(check(mid)) maxn = mid;  
            else minn = mid;
        }
        
        printf("%.12lf
    ", mid);
        return 0;
    }
    
  • 相关阅读:
    获取当前具有输入焦点控件的窗口句柄
    C++日志
    IsWindowVisible
    fedora20 播放aiv视频
    nginx 伪静态大于10个参数 $10
    fedora 安装nginx+php+mysql
    限制图片目录有文件的执行权限
    jQuery制作go to top按钮
    centos 6.5 安装阿里云的一键安装包(nginx+php5.4+mysql5.1)
    centos 6.5网卡dhcp不能获得网关
  • 原文地址:https://www.cnblogs.com/FrankOu/p/14279579.html
Copyright © 2011-2022 走看看