题目大意

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

分析

路线是A-线段-X-平面-Y-线段-D

可以发现两边都是单峰函数

证明不会(我连导都不会求) 挖坑

做法

三分AB中一点,再三分CD中一点

姿势

用结构体pt存,写起来就跟正常的浮点数三分一毛一样

solution

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#include <algorithm>
typedef double db;
using namespace std;
const db eps=1e-7; inline int rd(){
int x=0;bool f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=0;
for(;isdigit(c);c=getchar()) x=x*10+c-48;
return f?x:-x;
} struct pt{
db x,y;
pt(db _x=0.0,db _y=0.0){x=_x;y=_y;}
};
pt operator +(pt x, pt y){return pt(x.x+y.x,x.y+y.y);}
pt operator -(pt x, pt y){return pt(x.x-y.x,x.y-y.y);}
pt operator *(pt x, db d){return pt(x.x*d,x.y*d);}
pt operator /(pt x, db d){return pt(x.x/d,x.y/d);}
db dot(pt x,pt y){return x.x*y.x+x.y*y.y;}
db cross(pt x,pt y){return x.x*y.y-x.y*y.x;}
db length(pt x){return sqrt(dot(x,x));}
db dis(pt x,pt y){return length(y-x);} pt A,B,C,D;
db P,Q,R; db calc(pt x){
pt l=C,r=D,m1,m2;
db tp1,tp2;
while(dis(l,r)>eps){
m1=(l+l+r)/3.0;
m2=(r+l+r)/3.0;
tp1=dis(m1,D)/Q+dis(x,m1)/R;
tp2=dis(m2,D)/Q+dis(x,m2)/R;
if(tp1<tp2) r=m2;
else l=m1;
}
tp1=dis(l,D)/Q+dis(x,l)/R;
tp2=dis(r,D)/Q+dis(x,r)/R;
return min(tp1,tp2);
} int main(){ #ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif int x,y;
x=rd(),y=rd(); A=pt(x,y);
x=rd(),y=rd(); B=pt(x,y);
x=rd(),y=rd(); C=pt(x,y);
x=rd(),y=rd(); D=pt(x,y);
x=rd(); P=x;
x=rd(); Q=x;
x=rd(); R=x; pt l=A,r=B,m1,m2;
db tp1,tp2;
while(dis(l,r)>eps){
m1=(l+l+r)/3.0;
m2=(r+l+r)/3.0;
tp1=calc(m1)+dis(A,m1)/P;
tp2=calc(m2)+dis(A,m2)/P;
if(tp1<tp2) r=m2;
else l=m1;
}
tp1=calc(l)+dis(A,l)/P;
tp2=calc(r)+dis(A,r)/P;
printf("%.2lf",min(tp1,tp2));
return 0;
}

bzoj 1857 三分套三分的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 三分套三分 --- HDU 3400 Line belt

    Line belt Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一 ...

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

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

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

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

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

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

随机推荐

  1. python 函数内使用全局变量

    x = def change_global(): global x x = x + change_global() print(x) result: 2

  2. python 产生随机数

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  3. js完成打印功能

    最近在做项目要求实现打印功能,我采用js方式来实现 window.print();会弹出打印对话框,打印的是window.docunemt.body.innerHTML中的内容,可以局部打印,也可以全 ...

  4. HTML5语义

    语义通俗化为意义,也就是语义化的元素等于意义化的元素,看到这个元素的名称,就知道这个元素的意义,是拿来做什么用的,这就是HTML5的一个新特性,一个具有语义化的元素能够清楚的把元素的意义告诉浏览器和开 ...

  5. 用promise封装ajax

    首先贴代码 var ajaxOptions = { url: 'url', method: 'GET', async: true, data: null, dataType: 'text', } fu ...

  6. Codeforces 517 #B

    http://codeforces.com/contest/1072/problem/B 开始想的只有搜索,时间复杂度$O(4^n)$,明显有问题. 想了半个小时没有思路,然后想到了正难则反,就开始步 ...

  7. CF-1140 E - Palindrome-less Arrays

    题意:给定一个没有填完的序列,数值为-1表示你可以用 1~k 中的数字去覆盖它,求将该序列填充后,不存在长度为奇数的回文串的方案数 分析: 使之不存在长度为奇数的回文串,只需要满足不存在长度为3的回文 ...

  8. 科技庄园(背包dp)---对于蒟蒻来说死了一大片的奇题

    题目描述: Life种了一块田,里面种了一些桃树. Life对PFT说:“我给你一定的时间去摘桃,你必须在规定的时间之内回到我面前,否则你摘的桃都要归我吃!” PFT思考了一会,最终答应了! 由于PF ...

  9. 【启发式拆分】bzoj4059: [Cerc2012]Non-boring sequences

    这个做法名字是从武爷爷那里看到的…… Description 我们害怕把这道题题面搞得太无聊了,所以我们决定让这题超短.一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子 ...

  10. python入门:数字型和字符串换行要同类型 注意连接符

    #!/usr/bin/env python # -*- coding: utf-8 -*- #数字型和字符串换行要同类型 注意连接符 a = 1 b = 2 print(str(a) + " ...