HDU3400 三分套三分
题意
就是给你两条线段AB , CD ,一个人在AB以速度p跑,在CD上以q跑,
在其他地方跑速度是r。问你从A到D最少的时间。
三分AB ,然后再三分CD ,模板题目,这题卡精度 eps不能少
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <algorithm>
#include <set>
#include <iostream>
#include <map>
#include <stack>
#include <string>
#include <vector>
#define pi acos(-1.0)
#define eps 1e-9
#define fi first
#define se second
#define rtl rt<<1
#define rtr rt<<1|1
#define bug printf("******\n")
#define mem(a,b) memset(a,b,sizeof(a))
#define name2str(x) #x
#define fuck(x) cout<<#x" = "<<x<<endl
#define f(a) a*a
#define sf(n) scanf("%d", &n)
#define sff(a,b) scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define sffff(a,b,c,d) scanf("%d %d %d %d", &a, &b, &c, &d)
#define pf printf
#define FRE(i,a,b) for(i = a; i <= b; i++)
#define FREE(i,a,b) for(i = a; i >= b; i--)
#define FRL(i,a,b) for(i = a; i < b; i++)+
#define FRLL(i,a,b) for(i = a; i > b; i--)
#define FIN freopen("data.txt","r",stdin)
#define gcd(a,b) __gcd(a,b)
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int mod = 1e9 + ;
const int maxn = 2e5 + ;
const int INF = 0x3f3f3f3f;
const LL INFLL = 0x3f3f3f3f3f3f3f3fLL;
int t;
double P, Q, R, len1, len2;
struct node {
double x, y;
} a, b, c, d, temp1, temp2;
double dist ( node a, node b ) {
return sqrt ( eps + ( a.x - b.x ) * ( a.x - b.x ) + ( a.y - b.y ) * ( a.y - b.y ) );
}
void caltemp1 ( double cnt ) {
temp1.x = a.x + ( b.x - a.x ) / len1 * cnt;
temp1.y = a.y + ( b.y - a.y ) / len1 * cnt;
}
void caltemp2 ( double cnt ) {
temp2.x = d.x + ( c.x - d.x ) / len2 * cnt;
temp2.y = d.y + ( c.y - d.y ) / len2 * cnt;
}
double check ( double cnt ) {
caltemp1 ( cnt );
double l = , r = len2, ll, rr, ans1, ans2;
while ( r - l > eps ) {
ll = ( * l + r ) / , rr = ( * r + l ) / ;
caltemp2 ( ll );
ans1 = dist ( temp1, temp2 ) / R + dist ( d, temp2 ) / Q;
caltemp2 ( rr );
ans2 = dist ( temp1, temp2 ) / R + dist ( d, temp2 ) / Q;
if ( ans1 < ans2 ) r = rr;
else l = ll;
}
return ans1 + dist ( temp1, a ) / P;
}
int main() {
scanf ( "%d", &t );
while ( t-- ) {
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 );
len1 = dist ( a, b ), len2 = dist ( c, d );
double l = , r = len1, ll, rr;
while ( r - l > eps ) {
ll = ( * l + r ) / , rr = ( * r + l ) / ;
if ( check ( ll ) < check ( rr ) ) r = rr;
else l = ll;
}
printf ( "%.2f\n", check ( ll ) );
}
return ;
}
HDU3400 三分套三分的更多相关文章
- BZOJ 1857 传送带 (三分套三分)
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...
- 【BZOJ-1857】传送带 三分套三分
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1077 Solved: 575[Submit][Status][ ...
- bzoj1857: [Scoi2010]传送带--三分套三分
三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...
- 三分套三分 --- HDU 3400 Line belt
Line belt Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一 ...
- [luogu2571][bzoj1857][SCOI2010]传送门【三分套三分】
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
- 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】传送带(分治经典:三分套三分)
点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...
- loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)
题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...
- 最小球覆盖——模拟退火&&三分套三分套三分
题目 给出 $N(1 \leq N \leq 100)$ 个点的坐标 $x_i,y_i,z_i$($-100000 \leq x_i,y_i,z_i \leq 100000$),求包围全部点的最小的球 ...
随机推荐
- ubuntu10.10安装使用vnc
原文发表于:2010-12-15转载至cu于:2012-07-21 搭安全试验的环境,在vmware上安装了ubuntu10.10(大学的时候用过,最早用的好像是6系列吧).安装好后想用远程桌面控制, ...
- 第一次ScrumMeeting博客:团队任务分解
团队任务分解 1. 主要任务 Alpha阶段结束后,我们要实现一个较为简陋的用户系统,并实现资源的上传和下载功能,完成"贡献点"相关内容并进行用户行为观察,以便Beta阶段完善.除 ...
- Scrum立会报告+燃尽图(十一月二十四日总第三十二次):视频剪辑
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...
- Thunder团队第七周 - Scrum会议1
Scrum会议1 小组名称:Thunder 项目名称:i阅app Scrum Master:杨梓瑞 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...
- 01—为什么使用java
Java解决的问题 1.指针问题 java里面没有指针,用引用解决指针问题,但是引用是一种限制的指针,不能参与整数运行和指向任意位置的内存,并且不用显示回收对象 引用地址:http://blog.cs ...
- XCode 6.4 Alcatraz 安装的插件不可用
升级Xcode 6.4后插件都不可用了,解决办法: 1.在 Alcatraz中删除插件并退出Xcode: 2.重新打开Xcode 并安装: 3.退出Xcode: 4.进入Xcode,会提示如图,点击 ...
- 周总结<5>
周次 学习时间 新编写代码行数 博客量(篇) 学到知识点 12 10 100 1 路由器的设置(ospf协议):网页设计:哈夫曼树(C语言数构) Html案例: <!DOCTYPE html P ...
- Redis 列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含2^32-1个元素(4294967295,每个列表超过40亿个元素). ...
- lintcode-477-被围绕的区域
477-被围绕的区域 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O ...
- MDL
1 先是mdl的数据结构. 2 下面根据用法逐步的讲解mdl数据结构的含义:一般用法,先是 IoAllocateMdl :原型为: 最常用的是VirtualAddress和Length.把自己的Non ...