Bzoj 1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带
Time Limit: 1 Sec Memory Limit: 64 MB
Description
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间
Input
输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R
Output
输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位
Sample Input
0 0 0 100
100 0 100 100
2 2 1
Sample Output
136.60
HINT
对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10
Source
Day2
/*
三分套三分.
比较显然的凸形函数.
凸性函数套凸性函数应该还是凸性函数吧....
不会证明.
别忘了讨论斜率为0的情况....
*/
#include<iostream>
#include<cstdio>
#include<cmath>
#define MAXN 10001
#define eps 1e-9
using namespace std;
double ax,ay,bx,by,cx,cy,dx,dy,P,Q,R,ans;
double Cola(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double sanfenfuben2(double x,double y)//CD无斜率.
{
double mid,midmid,k,t1,t2,l,r;
l=min(cy,dy),r=max(cy,dy);
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=Cola(cx,mid,dx,dy)/Q+Cola(cx,mid,x,y)/R;
t2=Cola(cx,midmid,dx,dy)/Q+Cola(cx,midmid,x,y)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=Cola(cx,l,dx,dy)/Q+Cola(cx,l,x,y)/R;
return t1;
}
double sanfen2(double x,double y)//CD有斜率.
{
if(cx==dx) return sanfenfuben2(x,y);
double mid,midmid,k,t1,t2,l,r,b;
l=min(cx,dx),r=max(cx,dx);
k=(cy-dy)/(cx-dx);
b=cy-k*cx;
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=Cola(mid,mid*k+b,dx,dy)/Q+Cola(mid,mid*k+b,x,y)/R;
t2=Cola(midmid,midmid*k+b,dx,dy)/Q+Cola(midmid,midmid*k+b,x,y)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=Cola(l,l*k+b,dx,dy)/Q+Cola(l,l*k+b,x,y)/R;
return t1;
}
void sanfen1()//AB有斜率.
{
double mid,midmid,k,t1,t2,l,r,b;
l=min(ax,bx),r=max(ax,bx);
k=(ay-by)/(ax-bx);
b=ay-k*ax;
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=sanfen2(mid,k*mid+b)+Cola(mid,mid*k+b,ax,ay)/P;//+Cola(mid,mid*k,dx,dy)/R;
t2=sanfen2(midmid,midmid*k+b)+Cola(midmid,midmid*k+b,ax,ay)/P;//+Cola(midmid,midmid*k,dx,dy)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=sanfen2(l,l*k+b)+Cola(l,l*k+b,ax,ay)/P;
ans=min(ans,t1);
}
void sanfenfuben1()//AB无斜率.
{
double mid,midmid,k,t1,t2,l,r;
l=min(ay,by),r=max(ay,by);
while(l+eps<r)
{
mid=(2*l+r)/3,midmid=(l+2*r)/3;
t1=sanfen2(ax,mid)+Cola(ax,mid,ax,ay)/P;//+Cola(mid,mid*k,dx,dy)/R;
t2=sanfen2(ax,midmid)+Cola(ax,midmid,ax,ay)/P;//+Cola(midmid,midmid*k,dx,dy)/R;
if(t1<t2) r=midmid;
else l=mid;
}
t1=sanfen2(ax,l)+Cola(ax,l,ax,ay)/P;
ans=min(ans,t1);
}
int main()
{
freopen("walk.in","r",stdin);
freopen("walk.out","w",stdout);
cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;
cin>>P>>Q>>R;
ans=Cola(ax,ay,dx,dy)/R;
if(ax!=bx) sanfen1();
else sanfenfuben1();
printf("%.2lf",ans);
return 0;
}
Bzoj 1857: [Scoi2010]传送带(三分套三分)的更多相关文章
- BZOJ 1857: [Scoi2010]传送带
二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...
- bzoj 1857: [Scoi2010]传送带 三分
题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 934 Solved: 501[Submit][Stat ...
- BZOJ 1857: [Scoi2010]传送带(三分套三分)
Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2549 Solved: 1370 [Submit][Status][Discuss] Descriptio ...
- BZOJ 1857 传送带 (三分套三分)
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...
- 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- 【BZOJ-1857】传送带 三分套三分
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1077 Solved: 575[Submit][Status][ ...
- [luogu2571][bzoj1857][SCOI2010]传送门【三分套三分】
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
随机推荐
- asp.net图片浏览器效果
技术来源于同学会实践 前台设计 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- C#读取Excel文件,准换为list
经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径{try{ ...
- rest-spring-boot-starter
rest-spring-boot-starter 基于spring boot,统一业务异常处理,统一返回格式包装 依赖 <dependency> <groupId>tk.fis ...
- vue项目打包采坑
1. vue项目打包采坑 1.1. vue运行报错error:Cannot assign to read only property 'exports' of object '#' 这个错误我是在打包 ...
- uni-app悬浮框模板
1. uni-app悬浮框模板 1.1. 目标 模仿饿了吗app的悬浮框效果,即上移过程中,中间的某个组件框到顶部后不再上移,呈类似置顶的效果 1.2. 问题 中间遇到fixed固定组件导致flex失 ...
- 英语apyrite红碧玺apyrite单词
红碧玺(apyrite)是粉红.桃红.玫瑰红.深红.紫红等以红色调为主的碧玺,矿物学上主要属于锂电气石和镁电气石.红色起因可能与微量锰及锂和铯有关. 红色是碧玺中价值最高的,其中以紫红色和玫瑰红色最佳 ...
- Android实现二维码扫描功能
1.效果预览 先上图展示效果(模拟器没有摄像头,录出来效果不好,将就看) 2.集成步骤 1.拷贝本项目demo中的com.google.zxing5个包引入到自己的项目中. 2.拷贝本项目demo中的 ...
- MYSQL中的时间类型
时间上总共有五中表示方法:它们分别是 time.date.datetime.timestamp和year. time : “hh:mm:ss”格式表示的时间值,格式显示TIME值,但允许使用字符串或 ...
- linux-ifconfig 查看没有IP
ifconfig 查看没有IP,如图: 解决方法: 1.切换路径到 2.进入编辑ifcfg-ens33文件(文件名可能不同)模式 3.ONBOOT改为yes 4.点击ESC,输入:wq进行保存 5.输 ...
- 机器学习笔记8:XGBoost
目录 1 回顾一下决策树 2 XGBoost举例 2.1 问题和结果 2.2 第一棵树的计算方法 2.3 第二棵树的计算方法 3 XGBoost公式推导 3.1 第一种理解公式 3.2 第二种理解公式 ...