[SCOI2010]传送带[三分]

//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]传送带[三分]的更多相关文章
- bzoj 1857: [Scoi2010]传送带 三分
题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 934 Solved: 501[Submit][Stat ...
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
- Bzoj 1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- 洛谷P2571 [SCOI2010]传送带 [三分]
题目传送门 传送带 题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移 ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- [BZOJ1857][SCOI2010]传送带-[三分]
Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...
- SCOI2010 传送带 [三分/模拟退火]
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
- P2571 [SCOI2010]传送带
P2571 [SCOI2010]传送带 三分套三分. 前提条件:P3382 [模板]三分法 三分,求区间内单峰函数的最大/最小值. 我们把两条线段都跑三分,先ab后cd,求出最小值. 可以直接将二维坐 ...
- BZOJ 1857: [Scoi2010]传送带
二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...
随机推荐
- JNI调用之本地库文件的安装
在进行JNI调用的时候.是由java的本地接口调用本地库文件来完毕的,可是本地库文件须要放置到指定位置.JNI接口才干调用到,这个路径是由JVM的系统变量"java.library.path ...
- POJ 2677 旅行商问题 双调dp或者费用流
Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3408 Accepted: 1513 Description ...
- VirtualBox虚拟机扩容
1. 在VBox下增加储存 如图,未扩容前是40G 打开cmd命令行(win+r 输入cmd打开) 将目录切换到virtual的安装目录 cd C:\Program Files\Oracle\Vir ...
- 简单的并发测试工具 ab.exe ab.zip可下载 -摘自网络
ab.exe是一个性能检测工具,是apache server中的一个小组件,使用简单,方便 下载地址:http://files.cnblogs.com/files/gossip/ab.zip ...
- MySQL中多表删除方法
如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MyS ...
- sql查看所有表大小的方法
sql查看所有表大小的方法. 代码: declare @id int ) declare @pages int declare @dbname sysname ,) ,) ,) create tabl ...
- atitit.词法分析的实现token attilax总结
atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量) ...
- iPhone How-to:如何调整UIView的Z-Order
转自:http://bj007.blog.51cto.com/1701577/541572 在界面设计中,最终用户看到的呈现通常是由不同层的视图组成的,通过控制视图的层次就可以实现不同的效果和功能.而 ...
- iOS开发-iOS 10 由于权限问题导致崩溃的那些坑
iOS开发-iOS 10 由于权限问题导致崩溃的那些坑 6月份的WWDC大会结束有一段时间了,相信很多开发者也是在努力工作的闲时用着Xcode8 Beta版学习着新的特性吧. 使用Xcode8写自己 ...
- UIImageView只显示一半
本来正常的话,UIImageView会在UIScrollView内占满的,但是第一个UIImageView只占了高度的一半左右.如下图,红色的是UIScrollView的背景色,还有那么多没有填充,但 ...