zoukankan      html  css  js  c++  java
  • Tinkoff Challenge

    传送门

    题意

    给出一个矩形的左下角和右上角的坐标,给出n个点的初始坐标和运动速度和方向,询问是否存在一个时间使得所有点都在矩形内,有则输出最短时间,否则输出-1

    分析

    对于每个点如果运动过程中都不在矩形内,输出-1
    每个点的横纵运动分开考虑,判断处理得到点到达矩形边界的时间段,取交集,具体见代码

    trick

    1.all the mice that are strictly inside the mousetrap,即在矩形边界点不算入矩形
    2.卡精度

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    #define F(i,a,b) for(int i=a;i<=b;++i)
    #define R(i,a,b) for(int i=a;i<b;++i)
    #define mem(a,b) memset(a,b,sizeof(a))
    #pragma comment(linker, "/STACK:102400000,102400000")
    inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}
    
    int n;
    double x1,y1,x2,y2,rx,ry,vx,vy,minn,maxn;
    const double eps = 1e-13;
    bool flag;
    void work(double loc,double v,double l,double r)
    {
        if(fabs(v)<eps)
        {
            if((loc+eps)<=r&&(loc-eps)>=l) return ;
            else { flag=1;return ; }
        }
        if(v<0)
        {
            l=-l,r=-r,v=-v,loc=-loc;
            swap(l,r);
        }
        if(loc>r) { flag=1;return; }
        minn=min(minn,(r-loc)/v);
        if(loc<l) maxn=max(maxn,(l-loc)/v);
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
        minn=1e9,maxn=0;
        for(int i=1;i<=n;++i)
        {
            scanf("%lf%lf%lf%lf",&rx,&ry,&vx,&vy);
            if(flag) continue;
            work(rx,vx,x1,x2);
            work(ry,vy,y1,y2);
        }
        //printf("minn=%f maxn=%f
    ",minn,maxn);
        if(flag) { puts("-1");return 0; }
        if(maxn+eps<=minn) printf("%f
    ",maxn);else puts("-1");
    }
    
  • 相关阅读:
    MySQL中char(36)被认为是GUID导致的BUG及解决方案
    Hadoop相关的考题
    算法题
    对于Java静态内部类的理解
    关于网站数据分析
    static class 静态类(Java)转
    《深入浅出数据分析》读书笔记
    hive利器 自定义UDF+重编译hive
    使用kubectl实现Kubernetes容器与本地的文件双向复制
    Coolite Toolkit学习笔记二:服务器端Alert,Confirm,Prompt
  • 原文地址:https://www.cnblogs.com/chendl111/p/6767930.html
Copyright © 2011-2022 走看看