【题目描述】

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

【题目链接】

    https://loj.ac/problem/10017

【算法】

    猜想两条线段的最优点均满足单峰性质,于是三分套三分,代码借鉴黄学长。(http://hzwer.com/4255.html)

【代码】

    

 #include <bits/stdc++.h>
#define eps 1e-4
using namespace std;
int ax,ay,bx,by;
int cx,cy,dx,dy;
int p,q,r;
inline int read() {
int x=,f=; char c=getchar();
while(c<''||c>''){if(c=='-') f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
double dis(double x1,double y1,double x2,double y2) {
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double cal(double x,double y) {
double lx=cx,ly=cy,rx=dx,ry=dy;
double lmx,lmy,rmx,rmy,t1,t2;
while(fabs(lx-rx)>eps||fabs(ly-ry)>eps) {
lmx=lx+(rx-lx)/,lmy=ly+(ry-ly)/;
rmx=lx+(rx-lx)/*,rmy=ly+(ry-ly)/*;
t1=dis(x,y,lmx,lmy)/r+dis(lmx,lmy,dx,dy)/q;
t2=dis(x,y,rmx,rmy)/r+dis(rmx,rmy,dx,dy)/q;
if(t1>t2) lx=lmx,ly=lmy;
else rx=rmx,ry=rmy;
}
return dis(ax,ay,x,y)/p+dis(x,y,lmx,lmy)/r+dis(lmx,lmy,dx,dy)/q;
}
int main() {
ax=read(),ay=read(),bx=read(),by=read();
cx=read(),cy=read(),dx=read(),dy=read();
p=read(),q=read(),r=read();
double lx=ax,ly=ay,rx=bx,ry=by;
double lmx,lmy,rmx,rmy,t1,t2;
while(fabs(lx-rx)>eps||fabs(ly-ry)>eps) {
lmx=lx+(rx-lx)/,lmy=ly+(ry-ly)/;
rmx=lx+(rx-lx)/*,rmy=ly+(ry-ly)/*;
t1=cal(lmx,lmy),t2=cal(rmx,rmy);
if(t1>t2) lx=lmx,ly=lmy;
else rx=rmx,ry=rmy;
}
printf("%.2f\n",cal(lx,ly));
return ;
}

#10017 传送带(SCOI 2010)(三分套三分)的更多相关文章

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

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

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

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

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

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

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

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

  5. 【BZOJ1857】传送带(分治经典:三分套三分)

    点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...

  6. loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)

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

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

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

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

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

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

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

随机推荐

  1. man lspci

    lspci(8)                      Linux PCI Utilities                     lspci(8) NAME       lspci - 列出 ...

  2. OCP内容

    安装 --网络 --存储 --用户 --对象 --ASM (包含前面的内容的复习)--内存管理 -- 备份 --闪回 -- 事务 --sql 编程

  3. hash详细介绍

    转发http://www.cnblogs.com/maybe2030/p/4719267.html (请转步这个网站,写得非常好)

  4. ubuntu 14.04 安装openjdk 8

    最近准备在ubuntu14.04上安装Oracle,但是需要提前安装jdk,发现问题挺多的,后面看到了如下的操作步骤,成功安装,特意记录下来. 致谢:https://www.yangshenglian ...

  5. el-select中显示图标/图片设置

    <template> <el-select ref="select_icon" v-model="addModel.icon" @change ...

  6. 3D Computer Grapihcs Using OpenGL - 11 Model View Projection Matrices

    本节我们将绘制一个3维物体,立方体. 如果要渲染3D物体,我们需要了解MVP(Model View Projection),它表示三个转换矩阵.实际上这个名字不够明确,更加确切的释义如下: Model ...

  7. Java基础之数组类型

    对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...

  8. wnmp部署

    原文地址:   https://www.cnblogs.com/chaooo/p/5462781.html Before:提前规划好的目录结构 1.安装Nginx 到Nginx官网下载最新稳定版 ht ...

  9. Vue包的下载

    第一步:先去官网下载Vue包:https://cn.vuejs.org/,找到教程. 第二步:Vue的包有以下引入方式(点击之后,跳转页面,直接将代码复制下来,放到新文件中,另存为即可使用Vue.js ...

  10. idea中svn代码冲突

    1.鼠标右键点击项目根目录 --> 2.选择 subversion --> 3.resolve Text Confict --> 4.merge 手动编辑冲突部分,解决后就能正常提交 ...