BZOJ1857[SCOI2010]传送带
题目大意:平面上两条线段,一个人从一条线段的一个点到另一条线段的一个点,最小时间是多少
路径肯定是在一条线段上走一段,然后走平面,最后再走另一条线段,那么需要确定的就是在两条线段上走的距离,其他暴力算就行了
一条线段距离的确定直接三分就好了,另一条嘛,再套个三分就好了
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct node{
double x,y;
}A[];
node v1,v2;
double P,Q,R;
double dis(double x1,double y1,double x2,double y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double get_dis(double l1,double l2){
double x1,x2,y1,y2;
x1=A[].x+v1.x*l1;y1=A[].y+v1.y*l1;
x2=A[].x+v2.x*l2;y2=A[].y+v2.y*l2;
return dis(A[].x,A[].y,x1,y1)/P+dis(x1,y1,x2,y2)/R+dis(x2,y2,A[].x,A[].y)/Q;
}
double get(double l1){
double L=,R=,mid1,mid2;
for(int i=;i<=;++i){
mid1=(L+R)/,mid2=(mid1+R)/;
double k1=get_dis(l1,mid1);
double k2=get_dis(l1,mid2);
if(k1<k2)R=mid2;else L=mid1;
}
return get_dis(l1,L);
}
void work(){
for(int i=;i<;++i)scanf("%lf%lf",&A[i].x,&A[i].y);
scanf("%lf%lf%lf",&P,&Q,&R);
v1.x=A[].x-A[].x,v1.y=A[].y-A[].y;
v2.x=A[].x-A[].x,v2.y=A[].y-A[].y;
double L=,R=,mid1,mid2;
for(int i=;i<=;++i){
mid1=(L+R)/,mid2=(mid1+R)/;
double k1=get(mid1);
double k2=get(mid2);
if(k1<k2)R=mid2;else L=mid1;
}
printf("%.2lf\n",get(L));
}
int main(){
work();
return ;
}
BZOJ1857[SCOI2010]传送带的更多相关文章
- BZOJ1857 Scoi2010 传送带 【三分】
		
BZOJ1857 Scoi2010 传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P ...
 - 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
		
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
 - BZOJ1857 [Scoi2010]传送带  【三分法】
		
题目链接 BZOJ1857 题解 画画图就发现实际上是在\(AB\)上和\(CD\)上分别选两个点\(E\),\(F\),使得\(t_{AE} + t_{EF} + t_{FD}\)最小 然后猜想到当 ...
 - bzoj1857: [Scoi2010]传送带--三分套三分
		
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
 - [BZOJ1857][SCOI2010]传送带-[三分]
		
Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...
 - 【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][ ...
 - bzoj 1857: [Scoi2010]传送带  三分
		
题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 934 Solved: 501[Submit][Stat ...
 - 【BZOJ1857】传送带(三分)
		
[BZOJ1857]传送带(三分) 题面 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P, ...
 
随机推荐
- shell-bash学习04读取输入、分隔符、流程控制
			
读入输出 输入通常是通过stdin或参数传递给命令; 输出出现在stderr或stdout; 管道,过滤器,管道操作符: cmd1 | cmd2 | cmd3; //最后还有输出 ls | cat - ...
 - 快速破解哈希密文findmyhash
			
快速破解哈希密文findmyhash Kali Linux提供各种哈希密文破解工具,如hashcat.john.rainbows.不论哪一种,实施破解都不太容易.每种方式都需要花费大量的时间.破解 ...
 - iOS10 UI教程视图的中心位置
			
iOS10 UI教程视图的中心位置 center表示的是视图的中心位置属性,这个属性在相对的UI层次结构上工作,和frame类似.center属性是一个在父视图上定义视图的位置的简便方法.center ...
 - Visual Studio工具栏中无法选择调试设备
			
Visual Studio工具栏中无法选择调试设备 在Visual Studio工具栏中,默认显示已经识别的设备.用户可以从中选择对应的设备,进行调试和部署App.但是由于误操作,可能导致该选项丢失. ...
 - Python基础11- 函数之自定义函数
			
自定义函数语法结构:def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数:de ...
 - iOS学习26之UINavigationController
			
1. UINavigationController 1> 概述 UINavigationController : 导航控制器, 是 iOS 中最常用的多视图控制器之一, 用它来管理多个视图控制器 ...
 - BZOJ3659 : Which Dreamed It
			
首先判断一下是否无解,并剔除孤立点. 根据best theorem,有向图中以$i$为起点的欧拉回路个数为: 以$i$为根的树形图个数$\times\prod_{i=1}^n (deg(i)-1)!$ ...
 - word 批量修改表格格式
			
For i = 1 To ActiveDocument.Tables.Count ActiveDocument.Tables(i).Cell(1, 1).Select With Selection . ...
 - js的隐含参数(arguments,callee,caller)使用方法
			
在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[ ...
 - /var/log目录下的20个Linux日志文件功能详解
			
如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...