1857: [Scoi2010]传送带

Time Limit: 1 Sec Memory Limit: 64 MB

Description

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

Input

输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R

Output

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

Sample Input

0 0 0 100

100 0 100 100

2 2 1

Sample Output

136.60

HINT

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

1<=P,Q,R<=10

Source

Day2

/*
三分套三分.
比较显然的凸形函数.
凸性函数套凸性函数应该还是凸性函数吧....
不会证明.
别忘了讨论斜率为0的情况....
*/
#include<iostream>
#include<cstdio>
#include<cmath>
#define MAXN 10001
#define eps 1e-9
using namespace std;
double ax,ay,bx,by,cx,cy,dx,dy,P,Q,R,ans;
double Cola(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double sanfenfuben2(double x,double y)//CD无斜率.
{
double mid,midmid,k,t1,t2,l,r;
l=min(cy,dy),r=max(cy,dy);
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=Cola(cx,mid,dx,dy)/Q+Cola(cx,mid,x,y)/R;
t2=Cola(cx,midmid,dx,dy)/Q+Cola(cx,midmid,x,y)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=Cola(cx,l,dx,dy)/Q+Cola(cx,l,x,y)/R;
return t1;
}
double sanfen2(double x,double y)//CD有斜率.
{
if(cx==dx) return sanfenfuben2(x,y);
double mid,midmid,k,t1,t2,l,r,b;
l=min(cx,dx),r=max(cx,dx);
k=(cy-dy)/(cx-dx);
b=cy-k*cx;
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=Cola(mid,mid*k+b,dx,dy)/Q+Cola(mid,mid*k+b,x,y)/R;
t2=Cola(midmid,midmid*k+b,dx,dy)/Q+Cola(midmid,midmid*k+b,x,y)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=Cola(l,l*k+b,dx,dy)/Q+Cola(l,l*k+b,x,y)/R;
return t1;
}
void sanfen1()//AB有斜率.
{
double mid,midmid,k,t1,t2,l,r,b;
l=min(ax,bx),r=max(ax,bx);
k=(ay-by)/(ax-bx);
b=ay-k*ax;
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=sanfen2(mid,k*mid+b)+Cola(mid,mid*k+b,ax,ay)/P;//+Cola(mid,mid*k,dx,dy)/R;
t2=sanfen2(midmid,midmid*k+b)+Cola(midmid,midmid*k+b,ax,ay)/P;//+Cola(midmid,midmid*k,dx,dy)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=sanfen2(l,l*k+b)+Cola(l,l*k+b,ax,ay)/P;
ans=min(ans,t1);
}
void sanfenfuben1()//AB无斜率.
{
double mid,midmid,k,t1,t2,l,r;
l=min(ay,by),r=max(ay,by);
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=sanfen2(ax,mid)+Cola(ax,mid,ax,ay)/P;//+Cola(mid,mid*k,dx,dy)/R;
t2=sanfen2(ax,midmid)+Cola(ax,midmid,ax,ay)/P;//+Cola(midmid,midmid*k,dx,dy)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=sanfen2(ax,l)+Cola(ax,l,ax,ay)/P;
ans=min(ans,t1);
}
int main()
{
freopen("walk.in","r",stdin);
freopen("walk.out","w",stdout);
cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
cin>>P>>Q>>R;
ans=Cola(ax,ay,dx,dy)/R;
if(ax!=bx) sanfen1();
else sanfenfuben1();
printf("%.2lf",ans);
return 0;
}

Bzoj 1857: [Scoi2010]传送带(三分套三分)的更多相关文章

  1. BZOJ 1857: [Scoi2010]传送带

    二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...

  2. bzoj 1857: [Scoi2010]传送带 三分

    题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 934  Solved: 501[Submit][Stat ...

  3. BZOJ 1857: [Scoi2010]传送带(三分套三分)

    Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2549 Solved: 1370 [Submit][Status][Discuss] Descriptio ...

  4. BZOJ 1857 传送带 (三分套三分)

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...

  5. 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)

    1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...

  6. 【BZOJ1857】[Scoi2010]传送带 三分套三分

    [BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...

  7. bzoj1857: [Scoi2010]传送带--三分套三分

    三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...

  8. 【BZOJ-1857】传送带 三分套三分

    1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][ ...

  9. [luogu2571][bzoj1857][SCOI2010]传送门【三分套三分】

    题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...

随机推荐

  1. EF之DataBase添加新字段

    数据库中表添加新字段后,在EF的xml格式的中找到与表名相同的节点添加新字段 (SSDL.CSDL和C-S都要添加相关信息)

  2. Linux环境下:vmware安装Windows报错误-无人参与应答文件包含的产品密钥无效

    最近在安装window server 2012 R2的时候,输入好密钥可以继续安装,但在后面又提示我“无人参与应答文件包含的产品密钥无效.删除无效的密钥或在无人参与应答文件中提供有效的产品密钥继续进行 ...

  3. Java自学-接口与继承 super

    Java的super关键字 步骤 1 : 准备一个显式提供无参构造方法的父类 准备显式提供无参构造方法的父类 在实例化Hero对象的时候,其构造方法会打印 "Hero的构造方法 " ...

  4. C++ 中的静态成员函数与静态成员变量

    于CSDN 2014-01-17 与静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分.如果要在类外调用公用的静态成员函数,要用类名和域运算符"∷".如Box∷volu ...

  5. jQuery选择器与过滤器(二)

    一.jQuery选择器1.基本选择器:所有选择器    *标签选择器    标签名ID选择器    #ID类选择器    .className组合选择器    selector1,selector2 ...

  6. Python - 实现矩阵转置

    有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10 ...

  7. SpringCloud之监控数据聚合Turbine

    前言 SpringCloud 是微服务中的翘楚,最佳的落地方案. 使用 SpringCloud 的 Hystrix Dashboard 组件可以监控单个应用服务的调用情况,但如果是集群环境,可能就 不 ...

  8. RxJS——可观察的对象(Observable)

    可观察的(Observable) 可观察集合(Observables)是多值懒推送集合.它们填补了下面表格的空白: SINGLE MULTIPLE Pull Function Iterator Pus ...

  9. springboot使用阿里fastjson来解析数据

    1.spring boot默认使用的json解析框架是jackson,使用fastjson需要配置,首先引入fastjson依赖 pom.xml配置如下: <project xmlns=&quo ...

  10. 【漏洞复现】PHPStudy后门

    0x01 概述 Phpstudy软件是国内一款免费的PHP调试环境程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimizer多款软件一次性安装,无需配置即可 ...