两次三分

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int x[5],y[5],v[5]; double cal(double x1,double x2,double y1,double y2)
{
double tmp=(x1-x2)*(x1-x2);
tmp+=(y1-y2)*(y1-y2);
return sqrt(tmp);
} double chk(double xx,double yy)
{
double stx=x[3],sty=y[3],edx=x[4],edy=y[4];
double txt1,txt2;
while(1)
{
txt1=cal(xx,x[1],yy,y[1])/v[1]+cal(stx+(edx-stx)/3,x[4],sty+(edy-sty)/3,y[4])/v[2];
txt1+=cal(xx,stx+(edx-stx)/3,yy,sty+(edy-sty)/3)/v[3];
txt2=cal(xx,x[1],yy,y[1])/v[1]+cal(stx+(edx-stx)/3*2,x[4],sty+(edy-sty)/3*2,y[4])/v[2];
txt2+=cal(xx,stx+(edx-stx)/3*2,yy,sty+(edy-sty)/3*2)/v[3];
if(txt1<txt2)
{
edx=stx+(edx-stx)/3*2;
edy=sty+(edy-sty)/3*2;
}
else
{
stx=stx+(edx-stx)/3;
sty=sty+(edy-sty)/3;
}
if(fabs(txt1-txt2)<0.0001) break;
}
return txt1;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
for(int i=1;i<=4;i++)
scanf("%d %d",&x[i],&y[i]);
for(int i=1;i<=3;i++)
scanf("%d",&v[i]);
double stx=x[1],sty=y[1],edx=x[2],edy=y[2];
double txt1,txt2;
while(1)
{
txt1=chk(stx+(edx-stx)/3,sty+(edy-sty)/3);
txt2=chk(stx+(edx-stx)/3*2,sty+(edy-sty)/3*2);
if(txt1<txt2)
{
edx=stx+(edx-stx)/3*2;
edy=sty+(edy-sty)/3*2;
}
else
{
stx=stx+(edx-stx)/3;
sty=sty+(edy-sty)/3;
}
if(fabs(txt1-txt2)<0.0001) break;
}
printf("%.2f\n",(txt1+txt2)/2);
}
return 0;
}

hdoj 3400 三分的更多相关文章

  1. hdu 2899 hdu 3400 三分/几何

    hdu2899 : 水提,直接三分,事实上求导后二分也能够. #include<iostream> #include<cstdio> using namespace std; ...

  2. 三分套三分 --- HDU 3400 Line belt

    Line belt Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一 ...

  3. HDU 3400 Line belt (三分套三分)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3400 题意: 有两条带子ab和cd,在ab上的速度为p,在cd上的速度为q,在其它地方的速度为r.现 ...

  4. 三分 HDOJ 3714 Error Curves

    题目传送门 /* 三分:凹(凸)函数求极值 */ #include <cstdio> #include <algorithm> #include <cstring> ...

  5. HDU 3400 Line belt (三分再三分)

    HDU 3400 Line belt (三分再三分) ACM 题目地址:  pid=3400" target="_blank" style="color:rgb ...

  6. HDU 3400 Line belt【三分套三分】

    从A出发到D,必定有从AB某个点E出发,从某个点F进入CD 故有E,F两个不确定的值. 在AB上行走的时间   f = AE / p 在其他区域行走的时间 g = EF / r 在CD上行走的时间   ...

  7. [三分]HDOJ 5531 Rebuild

    题意:给n个点,以这n个点为圆心画圆,使得所有的圆与其相邻的圆相切. 求n个圆最小的面积和. 分析:很容易想到确定了其中一个圆的半径之后,其他的圆的半径也能随之确定了. 画一画三个点的和四个点的,会发 ...

  8. 【HDOJ】3400 Line belt

    三分. #include <cstdio> #include <cstring> #include <cmath> typedef struct { double ...

  9. HDU 3400 Line belt (三分嵌套)

    题目链接 Line belt Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

随机推荐

  1. JavaScript学习笔记之 数组方法一 堆栈 和队列

    数组的方法 以及 堆栈的操作的方法 JavaScript是一种弱类型语言,不像其它程序语言需要严格定义数据类型.在JavaScript中数组可以任意修改变动,这样也就出现了一个问题,如果边遍历数组边操 ...

  2. SELECT--UNION,UNION ALL,MINUS, INTERSECT,EXISTS

    SELECT--UNION,UNION ALL,MINUS, INTERSECT返回两个查询结果的集合操作,两个查询结果集必须字段相同.UNION和UNION ALL并集操作,UNION并集后去掉重复 ...

  3. 编译U-boot时,make[1]: *** 没有规则可以创建mkimage.o”

    执行完make smdk2440_config 对Uboot重行编译怎么会出现这样的错误 make[1]: Entering directory `/home/win/S3-ARM/Part4/ubo ...

  4. (转) [老老实实学WCF] 第三篇 在IIS中寄存服务

    第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...

  5. linux安装rz和sz

    rz命令是用来上传文件 sz命令是用来下载文件 1.系统安装了yum 以root用户登录: yum install lrzsz -y 2.没有安装yum 以下地址中有详解 http://jingyan ...

  6. (转载)iOS 多媒体

    音频:(音效.音乐) 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音 ...

  7. 学习unity的第一个小游戏(Roll the ball)的笔记

    1.摄像机的跟随运动,逻辑就是保持摄像机跟主角的距离不变(Undate()函数). offset=trandform.position-player.position. Undate() { tran ...

  8. CAS单点登录原理以及debug跟踪登录流程

    CAS 原理和协议 基础模式 基础模式 SSO 访问流程主要有以下步骤: 1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源. 2. 定向认证: SSO 客户端会重定向用户请求到 SS ...

  9. C语言中的sizeof和strlen

    1.sizeof是算符,strlen是函数: 2.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的: 3.大部分编译程序,在编译的时候就把sizeof计算 ...

  10. 洛谷 P3367 【模板】并查集

    P3367 [模板]并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入输出格式 输入格式: 第一行包含两个整数N.M,表示共有N个元素和M个操作. 接下来M行,每行包含三个整数 ...