【BZOJ1857】传送带(三分)
【BZOJ1857】传送带(三分)
题面
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
题解
又是一道很有意思的题目
现在相当于要求一个函数的最小值
自然要YY是一个下凸函数
然后就首先在AB线段上三分一个点出来算答案
答案怎么算了,那自然在CD线段上先找一个点,在计算吧。
继续YY这也是一个下凸函数
所以又来一次三分
然后就蜜汁的做完了。
但是,这题也很迷,三分的时候请使用do-while
否则会有奇怪的数据,因为点挨得很近
导致三分没有进行
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define esp 1e-5
inline int read()
{
int x=0,t=1;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
double A1,B1,A2,B2,Lx,Rx,Ly,Ry;
double Ax,Ay,Bx,By,Cx,Cy,Dx,Dy;
double P,Q,RR;
double Dis(double x,double y,double X,double Y)
{
return sqrt((x-X)*(x-X)+(y-Y)*(y-Y));
}
double Count(double xx,double yy)
{
double lx=Cx,rx=Dx;
double ly=Cy,ry=Dy;
double ret=0;
do
{
double m1=(rx-lx)/3+lx,z1=(ry-ly)/3+ly;
double m2=lx+rx-m1,z2=ly+ry-z1;
double tt1=Dis(Ax,Ay,xx,yy)/P+Dis(xx,yy,m1,z1)/RR+Dis(m1,z1,Dx,Dy)/Q;
double tt2=Dis(Ax,Ay,xx,yy)/P+Dis(xx,yy,m2,z2)/RR+Dis(m2,z2,Dx,Dy)/Q;
if(tt1>tt2)lx=m1,ly=z1,ret=tt2;
else rx=m2,ry=z2,ret=tt1;
}while(fabs(lx-rx)>esp||fabs(ly-ry)>esp);
return ret;
}
int main()
{
Ax=read();Ay=read();Bx=read();By=read();
Cx=read();Cy=read();Dx=read();Dy=read();
P=read();Q=read();RR=read();
Lx=Ax,Rx=Bx;
Ly=Ay,Ry=By;
double ans=0;
do
{
double mx1=(Rx-Lx)/3+Lx,my1=(Ry-Ly)/3+Ly;
double mx2=Lx+Rx-mx1,my2=Ly+Ry-my1;
double k1=Count(mx1,my1),k2=Count(mx2,my2);
if(k1>k2)Lx=mx1,Ly=my1,ans=k1;
else Rx=mx2,Ry=my2,ans=k2;
}while(fabs(Rx-Lx)>esp||fabs(Ry-Ly)>esp);
printf("%.2lf\n",ans);
return 0;
}
【BZOJ1857】传送带(三分)的更多相关文章
- 【BZOJ1857】[Scoi2010]传送带 三分套三分
[BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...
- 【BZOJ-1857】传送带 三分套三分
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1077 Solved: 575[Submit][Status][ ...
- 【BZOJ1857】【SCOI2010】传送带 [三分]
传送带 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送 ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- [BZOJ1857][SCOI2010]传送带-[三分]
Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...
- BZOJ 1857 传送带 (三分套三分)
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...
- bzoj 1857: [Scoi2010]传送带 三分
题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 934 Solved: 501[Submit][Stat ...
- BZOJ1857 传送带 (三分法求单峰函数极值)
第一次发BZOJ的题解,先从水题开始吧,好不容易找到一道水题,那就从这题开始吧. 1.题设部分{ 题目描述: 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线 ...
- 洛谷P2571 [SCOI2010]传送带 [三分]
题目传送门 传送带 题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移 ...
- loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
随机推荐
- markdown的流程图、时序图、甘特图画法
https://www.jianshu.com/p/a9ff5a9cdb25 Markdown里面的序列图 https://shd101wyy.github.io/markdown-preview-e ...
- IDEA的导包优化问题
一.现象 文件初始导包状态 package co.x.dw.function; import java.text.SimpleDateFormat; import java.util.ArrayLis ...
- eslint 入门项目搭建过程
github 地址 : https://github.com/gebin/eslint-demo 运行该项目 npm install npm start 访问 http://localhost:900 ...
- 捋一捋js面向对象的继承问题
说到面向对象这个破玩意,曾经一度我都处于很懵逼的状态,那么面向对象究竟是什么呢?其实说白了,所谓面向对象,就是基于类这个概念,来实现封装.继承和多态的一种编程思想罢了.今天我们就来说一下这其中继承的问 ...
- [原创]ubuntu14.04部署ELK+redis日志分析系统
ubuntu14.04部署ELK+redis日志分析系统 [环境] host1:172.17.0.4 搭建ELK+redis服务 host2:172.17.0.3 搭建logstash+nginx服务 ...
- [译]前端JS面试题汇总 Part 1(事件委托/this关键字/原型链/AMD与CommonJS/自执行函数)
原文:https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/javascript-questio ...
- JPA数据懒加载LAZY配合事务@Transactional使用(三)
上篇博文<JPA数据懒加载LAZY和实时加载EAGER(二)>讲到,如果使用懒加载来调用关联数据,必须要保证主查询session(数据库连接会话)的生命周期没有结束,否则,你是无法抽取到数 ...
- CodeForces-748C
这题就是确定一个点,然后去找能够实现最短距离的点且距离最远的点,因为题目要求点最少.在查找时,如果从最后的点开始枚举,找到的第一个满足距离最短的点一定是最远点,但是查找的复杂度是O(n),共有n次查找 ...
- POJ - 1426 暴力枚举+同余模定理 [kuangbin带你飞]专题一
完全想不到啊,同余模定理没学过啊,想起上学期期末考试我问好多同学'≡'这个符号什么意思,都说不知道,你们不是上了离散可的吗?不过看了别人的解法我现在会了,同余模定理介绍及运用点这里点击打开链接 简单说 ...
- 运行web项目端口占用问题
---恢复内容开始--- 有时候运行web项目会提示8080端口已经被占用这一类问题(Error running Tomcat8: Address localhost:1099 is already ...