zoukankan      html  css  js  c++  java
  • SCOI2010 传送带

    传送门

    题目描述

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间

    输入输出格式

    输入格式:

    输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By

    第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy

    第三行是3个整数,分别是P,Q,R

    输出格式:

    输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位

    输入输出样例

    输入样例#1: 
    0 0 0 100
    100 0 100 100
    2 2 1
    
    输出样例#1: 
    136.60

    说明

    对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000

    分析

    如果在坐标系中给出线段AB和线段CD,要求我们从A点走到D点,在AB上的速度是v1,CD上的速度是v2,整个坐标系上面的速度是v3,
    求最短时间,如果找到AB和CD上面的最优点,能不能把这两个点连起来作为最后的最优解呢?当然可以啦~
    在AB上三分E点 然后在CD上三分F点 就可以找到最小时间 总的来说运用了一个三分套三分。

    #include<bits/stdc++.h>
    using namespace std;
    typedef double db;
    db ax,ay,bx,by,cx,cy,dx,dy,p,q,r;
    db f(db a,db b,db c,db d)
    {
        return sqrt((a-c)*(a-c)+(b-d)*(b-d));
    }
    db check(db x,db y)
    {
        db lx=cx,ly=cy,rx=dx,ry=dy;
        for(int i=0;i<100;i++)
        {
            db x1=lx+(rx-lx)/3,x2=rx-(rx-lx)/3;
            db y1=ly+(ry-ly)/3,y2=ry-(ry-ly)/3;
            db ans1=f(ax,ay,x,y)/p+f(x,y,x1,y1)/r+f(x1,y1,dx,dy)/q;
            db ans2=f(ax,ay,x,y)/p+f(x,y,x2,y2)/r+f(x2,y2,dx,dy)/q;
            if(ans1>ans2) lx=x1,ly=y1;
            else rx=x2,ry=y2;
        }
        return f(ax,ay,x,y)/p+f(x,y,rx,ry)/r+f(rx,ry,dx,dy)/q;
    }
    int main()
    {
        scanf("%lf%lf%lf%lf",&ax,&ay,&bx,&by);
        scanf("%lf%lf%lf%lf",&cx,&cy,&dx,&dy);
        scanf("%lf%lf%lf",&p,&q,&r);
        db lx=ax,ly=ay,rx=bx,ry=by;
        for(int i=0;i<100;i++)
        {
            db x1=lx+(rx-lx)/3,y1=ly+(ry-ly)/3;
            db x2=rx-(rx-lx)/3,y2=ry-(ry-ly)/3;
            if(check(x1,y1)<=check(x2,y2)) rx=x2,ry=y2;
            else lx=x1,ly=y1;
        }
        printf("%.2lf
    ",check(lx,ly));
        return 0;
    }

    希望大家都能够AC啦!

  • 相关阅读:
    mongdb
    网络编程
    分布式锁与事务
    mongodb
    Angular4
    思考
    kafka
    Spark总结
    你不知道的javaScript笔记(1)
    vue2.0 配置 选项 属性 方法 事件 ——速查
  • 原文地址:https://www.cnblogs.com/valentino/p/11161183.html
Copyright © 2011-2022 走看看