//point(AB)->point(CD) 距离满足下凸性,用三分套三分实现
#include<cmath>
#include<cstdio>
#include<iostream>
#define pf(x) ((x)*(x))
using namespace std;
typedef double real;
const real eps=1e-;
real ax,ay,bx,by,cx,cy,dx,dy,P,Q,R,ans;
inline real dis(real x1,real y1,real x2,real y2){
return sqrt(pf(x1-x2)+pf(y1-y2));
}
inline real trichotomy2_(real x,real y){//CD无斜率
real l,r,lmid,rmid,t1,t2;
l=min(cy,dy);r=max(cy,dy);
while(l+eps<r){
lmid=(l*+r)/,rmid=(l+r*)/;
t1=dis(cx,lmid,x,y)/R+dis(cx,lmid,dx,dy)/Q;
t2=dis(cx,rmid,x,y)/R+dis(cx,rmid,dx,dy)/Q;
if(t1<t2) r=rmid;
else l=lmid;
}
t1=dis(cx,l,x,y)/R+dis(cx,l,dx,dy)/Q;
return t1;
}
inline real trichotomy2(real x,real y){//CD有斜率
if(cx==dx) return trichotomy2_(x,y);
real l,r,lmid,rmid,k,b,t1,t2;
l=min(cx,dx);r=max(cx,dx);
k=(cy-dy)/(cx-dx);
b=cy-k*cx;
while(l+eps<r){
lmid=(l*+r)/,rmid=(l+r*)/;
t1=dis(lmid,k*lmid+b,x,y)/R+dis(lmid,k*lmid+b,dx,dy)/Q;
t2=dis(rmid,k*rmid+b,x,y)/R+dis(rmid,k*rmid+b,dx,dy)/Q;
if(t1<t2) r=rmid;
else l=lmid;
}
t1=dis(l,k*l+b,x,y)/R+dis(l,k*l+b,dx,dy)/Q;
return t1;
}
inline real trichotomy1(){//AB有斜率
real l,r,lmid,rmid,k,b,t1,t2;
l=min(ax,bx);r=max(ax,bx);
k=(ay-by)/(ax-bx);
b=ay-k*ax;
while(l+eps<r){
lmid=(l*+r)/,rmid=(l+r*)/;
t1=trichotomy2(lmid,k*lmid+b)+dis(lmid,k*lmid+b,ax,ay)/P;
t2=trichotomy2(rmid,k*rmid+b)+dis(rmid,k*rmid+b,ax,ay)/P;
if(t1<t2) r=rmid;
else l=lmid;
}
t1=trichotomy2(l,k*l+b)+dis(l,k*l+b,ax,ay)/P;
ans=min(ans,t1);
}
inline real trichotomy1_(){//AB无斜率
real l,r,lmid,rmid,t1,t2;
l=min(ay,by);r=max(ay,by);
while(l+eps<r){
lmid=(l*+r)/,rmid=(l+r*)/;
t1=trichotomy2(ax,lmid)+dis(ax,lmid,ax,ay)/P;
t2=trichotomy2(ax,rmid)+dis(ax,rmid,ax,ay)/P;
if(t1<t2) r=rmid;
else l=lmid;
}
t1=trichotomy2(ax,l)+dis(ax,l,ax,ay)/P;
ans=min(ans,t1);
}
int main(){
cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
cin>>P>>Q>>R;
ans=dis(ax,ay,dx,dy);
if(ax!=bx) trichotomy1();
else trichotomy1_();
printf("%.2lf",ans);
return ;
}

[SCOI2010]传送带[三分]的更多相关文章

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

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

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

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

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

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

  4. 洛谷P2571 [SCOI2010]传送带 [三分]

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

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

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

  6. [BZOJ1857][SCOI2010]传送带-[三分]

    Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...

  7. SCOI2010 传送带 [三分/模拟退火]

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

  8. P2571 [SCOI2010]传送带

    P2571 [SCOI2010]传送带 三分套三分. 前提条件:P3382 [模板]三分法 三分,求区间内单峰函数的最大/最小值. 我们把两条线段都跑三分,先ab后cd,求出最小值. 可以直接将二维坐 ...

  9. BZOJ 1857: [Scoi2010]传送带

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

随机推荐

  1. blender, knife工具

    点击Knife按钮开始切割,MLB在边上确认分割点,return键完成切割,MRB取消切割(这些在窗口下面的信息提示栏中都有写,如图中如示).

  2. 蜜果私塾:informix数据库学习合集[不断补充]

    一.infomix使用备忘录     目录结构:     1. 启动与停止命令:      2. 修改数据库编码:      3. 查看informix占用的端口:      4. 使用dbacces ...

  3. Composer fails to download http json files on "update", not a network issue, https fine

    "repositories": [ { "packagist": false }, { "type": "composer&quo ...

  4. maven 中使用jstl 错误解决

    maven 中使用jstl表达式中出现如上错误.原因: 导入jstl 的jar包,却没有在pom文件中添加jstl相关的jar依赖项. <!--jstl表达式--> <depende ...

  5. dp之多重背包hdu1114

    题目很水,不多说......... #include<stdio.h> int main() { long t,n,m,a,i,j,dp[10005],vol[505],jizhi[505 ...

  6. 读取数据库中timestamp类型去掉毫秒

    数据库中查询出来的时间是:2015-09-24 14:30:26.2,带有毫秒,需要去掉. 方法一: public static Timestamp getSystemTime() { Date dt ...

  7. /usr/bin/ld: cannot find -lc错误原因及解决方法

    问题解决 我在执行如下命令的时候,出现了错误. gcc -o main main.c -static -L. –lmylib Linux环境下gcc静态编译/usr/bin/ld: cannot fi ...

  8. call_usermodehelper内核中运行用户应用程序

    init是用户空间第一个程序,在调用init前程序都运行在内核态,之后运行init时程序运行到用户态. 操作系统上,一些内核线程在内核态运行,它们永远不会进入用户态.它们也根本没有用户态的内存空间.它 ...

  9. RSYNC在zabbix中的检查

      RSYNC在zabbix中的检查 作者:高波 归档:学习笔记 2017/08/21 快捷键: Ctrl + 1    标题1 Ctrl + 2    标题2 Ctrl + 3    标题3 Ctr ...

  10. http://jadethao.iteye.com/blog/1926525

    http://jadethao.iteye.com/blog/1926525 ————————————————————————————————————————————————————————————— ...