P2571 [SCOI2010]传送带

三分套三分。

前提条件:P3382 【模板】三分法

三分,求区间内单峰函数的最大/最小值。

我们把两条线段都跑三分,先ab后cd,求出最小值。

可以直接将二维坐标进行三分,为了方便编写,不一定非要取三等分点。代码中取的是中点和一个四等分点。

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef double db;
inline db _min(const db &a,const db &b) {return a<b ?a:b;}
const db eps=1e-;
struct node{db x,y;}a,b,c,d; //存坐标
db p,q,r;
inline db dist(node &A,node &B) {return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));}
inline db F(node &n,node &m) {return dist(a,n)/p+dist(n,m)/r+dist(m,d)/q;} //总距离计算
inline db sec(node &A){
node l1=c,r1=d,l2,r2; db ans=1e9;
do{
l2.x=(l1.x+r1.x)/2.0,l2.y=(l1.y+r1.y)/2.0;
r2.x=(l2.x+r1.x)/2.0,r2.y=(l2.y+r1.y)/2.0;
db q1=F(A,l2),q2=F(A,r2);
if(q1>q2) l1=l2;
else r1=r2;
ans=_min(ans,_min(q1,q2));
}while(fabs(r1.x-l1.x)>=eps||fabs(r1.y-l1.y)>=eps);
return ans;
}
int main(){
scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y);
scanf("%lf%lf%lf%lf",&c.x,&c.y,&d.x,&d.y);
scanf("%lf%lf%lf",&p,&q,&r);
node l1=a,r1=b,l2,r2; db ans=1e9;
do{
l2.x=(l1.x+r1.x)/2.0,l2.y=(l1.y+r1.y)/2.0; //取中点
r2.x=(l2.x+r1.x)/2.0,r2.y=(l2.y+r1.y)/2.0; //取四等分点
db q1=sec(l2),q2=sec(r2); //在cd上三分
if(q1>q2) l1=l2;
else r1=r2;
ans=_min(ans,_min(q1,q2));
}while(fabs(r1.x-l1.x)>=eps||fabs(r1.y-l1.y)>=eps); //使用do-while循环是防止线段退化成一个点的情况时直接跳出(如a,b重合)
printf("%.2lf",ans);
return ;
}

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

  1. 【解题报告】洛谷 P2571 [SCOI2010]传送带

    [解题报告]洛谷 P2571 [SCOI2010]传送带今天无聊,很久没有做过题目了,但是又不想做什么太难的题目,所以就用洛谷随机跳题,跳到了一道题目,感觉好像不是太难. [CSDN链接](https ...

  2. P2571 [SCOI2010]传送带——hyl天梦

    P2571 [SCOI2010]传送带题解----天梦 如写的不好,请多见谅. 对于这道题,我首先想说,确实困惑了我好久,看网上的各种题解,却都不尽人意,思路早已明白,却不会操作.最后想想,还是觉得自 ...

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

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

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

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

  5. 洛谷 P2571 [SCOI2010]传送带 题解

    每日一题 day51 打卡 Analysis 这道题是用非常恶心的三分套三分做的,有一个技巧是不要枚举坐标,枚举两条线段构成三角形的相似比就好了. 了解思路就还挺好写的(尽管我还调了三天) #incl ...

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

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

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

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

  8. [SCOI2010]传送带 三分法

    [SCOI2010]传送带 LG传送门 三分法模板. 关于为什么可以三分,我选择感性理解,有人证明了,总之我是懒得证了. 假设路径是\(A \to E \to F \to D\),\(E\)和\(F\ ...

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

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

随机推荐

  1. 如何将Win10 的环境变量页面设置用在win7上面?

    如何将Win10 的环境变量设置用在win7上面? Win7一般是如下设置: Win10 是如下设置: 解决办法: 注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr ...

  2. NLP-python 自然语言处理01

    # -*- coding: utf-8 -*- """ Created on Wed Sep 6 22:21:09 2017 @author: Administrator ...

  3. 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息

    详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...

  4. ArcGIS Server 服务器日志(待修改)

    有时遇到服务相关错误,需要查看日志来排查,这里简单写下日志相关操作. 服务器日志:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html ...

  5. QS Network---zoj1586最小生成树

    Description Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In th ...

  6. Chrome百度不显示中文字体

    chrome://flags/ 启用DirectWrite 关闭就可以了

  7. Why String is Immutable or Final in Java

    The string is Immutable in Java because String objects are cached in String pool. Since cached Strin ...

  8. Shell的>/dev/null、2>&1、2>1

    转载自:http://dos2unix.cn/link/480 1. 标准输入stdin文件描述符为0,标准输出stdout文件描述符为1,标准错误stderr文件描述符为2 2. /dev/null ...

  9. 划分LUN

    划分LUN http://mp.weixin.qq.com/s?__biz=MzAwNzU3NzQ0MA==&mid=209842199&idx=1&sn=7d77fdf7a8 ...

  10. js-jquery-Validate校验【一】

    一.导入 js 库 <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.j ...