xmu 1125.越野车大赛

Description

TheBeet正在參加一场越野车大赛。比赛的场地如右图:共分三块。每一块地面的长宽均为N与M,但地表情况不同。越野车在这段路面上的最快速度也不同。

蓝色线表示TheBeet可能的行车路线。

比赛的要求是要求选手从比赛的场地左上角驾车至右下角。

TheBeet想知道假设他在全部路段都以最高速度行驶(不考虑加速阶段),最快能在多少时间内完毕比赛。

Input

  输入数据的第一行为两个正整数N M(N<=3000,M<=1000),表示一块路面的长和宽。

  第二行为三个正整数S1,S2,S3(0<S1,S2,S3<=100)。从上至下依次表示各个路面上越野车的最快速度。

Output

  输出一个实数表示TheBeet最快能在多少时间内完毕比赛。请输出一个尽可能精确的数字,控制误差在±0.000001的内。

Sample Input

30 10

2 5 3

Sample Output

13.7427361525

Hint

  假设你的输出和结果的相差在0.000001之内,则觉得是正确答案。

思路:

这个题目不错。横线N上有两个点。先要确定第一个x1,x1可能为mid1或midmid1;1,以mid1为基准求第二个点     2,以midmid1为基准求第二个点。

比較两个结果再一次三分求极值。

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define eps 1e-7
int n,m;
int s1,s2,s3; double cal(double x,double y)
{
return sqrt(m*m+x*x)/s1+sqrt(m*m+y*y)/s2+sqrt(m*m+(n-x-y)*(n-x-y))/s3;
} int main()
{
cin>>n>>m;
cin>>s1>>s2>>s3;
double ans=0xfffffff;
double l=0,h=n,ll=0,hh=n;
double mid1,midmid1,mid2,midmid2;
double t1,t2,t11,t22;
while(h-l>eps)
{
mid1=(l+h)/2;
midmid1=(mid1+h)/2;
//ans1=cal(mid1);
//ans11=cal(midmid1);
ll=0,hh=n;
while(hh-ll>eps)
{
mid2=(ll+hh)/2;
midmid2=(mid2+hh)/2;
t11=cal(mid1,mid2);
t22=cal(mid1,midmid2);
if(t11<t22)
hh=midmid2;
else
ll=mid2;
}//计算mid1为基准的第二个点的位置
t1=cal(mid1,ll);
ll=0,hh=n;
while(hh-ll>eps)
{
mid2=(ll+hh)/2;
midmid2=(mid2+hh)/2;
t11=cal(midmid1,mid2);
t22=cal(midmid1,midmid2);
if(t11<t22)
hh=midmid2;
else
ll=mid2;
}
t2=cal(midmid1,ll);
if(t1<t2)
{
h=midmid1;ans=min(ans,t1);
}
else
{
l=mid1;ans=min(ans,t2);
}
}
printf("%.10lf\n",ans);
return 0;
}

xmu 1125 越野车大赛(公式推导&amp;&amp;三分)(中等)的更多相关文章

  1. XMU 1125 越野车大赛 【三分】

    1125: 越野车大赛 Time Limit: 500 MS  Memory Limit: 64 MB  Special JudgeSubmit: 8  Solved: 4[Submit][Statu ...

  2. xmu1125 越野车大赛(三分)

    1125: 越野车大赛 Time Limit: 500 MS  Memory Limit: 64 MB  Special JudgeSubmit: 4  Solved: 3[Submit][Statu ...

  3. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  4. 2017"百度之星"程序设计大赛 - 复赛 01,03,05

    Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. NDT(Normal Distributions Transform)算法原理与公式推导

    正态分布变换(NDT)算法是一个配准算法,它应用于三维点的统计模型,使用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面的公式推导 ...

  6. 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名

    蛮牛杯启动了,大家开始报名! http://cup.manew.com/ 这不是一篇普通的通稿,别着急忽略它.它是一篇可以让你梦想变现的通稿! 从某一天开始,游戏蛮牛就立志要为开发者服务,我们深知这一 ...

  7. codevs 3288 积木大赛

    题目描述 Description 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第i块积木的最终高度 ...

  8. hdu3714 三分找最值

    Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. 详解Maple如何公式推导和生成代码

    公式推导 直观自然的数学表达式,智能的关联菜单,交互式助手等协助您从容通过推导过程,让您更容易地完成解决方案的开发,快速.无错! 分析 Maple 内置超过大量的计算函数,包括积分变换,微分方程求解器 ...

随机推荐

  1. 【坐标变换】【二维偏序】【线段树】Gym - 100820G - Racing Gems

    题意:第一象限有n个点,你从x正半轴任选一个位置出发,vy恒定,vx可以任意变化,不过只能在-vy/r到vy/r之间变化,问你最多能经过多少个点. 暴力dp是n^2,不可取. 注意到,一个点,所能到达 ...

  2. python输入输出入门 A+B

    描述 求两个整数之和. 输入 输入数据只包括两个整数A和B. 输出 两个整数的和. 样例输入 1 2 样例输出  3 a=input().split() print(int(a[0])+int(a[1 ...

  3. 中国剩余定理 hdu 1573 X问题

    HDU 1573 X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. mybatis源码分析(1)-----sqlSessionFactory创建

    1. 首先了解一下mybatis,包含核心jar ,以及spring相关jar. <!-- Mybatis相关组件 --> <dependency> <groupId&g ...

  5. jpush-react-native 推送功能(Android 篇)

    github原地址 极光推送官方支持的 React Native 插件 安装 npm install jpush-react-native --savenpm install jcore-react- ...

  6. Windows Embedded Compact 7网络编程概述(上)

    如今,不论是嵌入式设备.PDA还是智能手机,网络都是必不可少的模块.网络使人们更方便地共享设备上的信息和资源.而且,利用智能手机浏览互联网,也逐渐成为生活中的常见手段.物联网所倡导的物物相联,也离不开 ...

  7. Android开发:ListView加上长按事件

    为ListView加上长按事件 lvMain.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public b ...

  8. SQL SERVER SQLOS的任务调度--微软亚太区数据库技术支持组 官方博客

    https://blogs.msdn.microsoft.com/apgcdsd/2011/11/23/sql-server-sqlos/

  9. jquery-问题解答

    1.var v = $('.summer-input:input').val(); //依据class获取input 2.var v = $('input[name=user\\.name]').va ...

  10. linux下启动tomcat出现“This file is needed to run this program ”

    使用sh startup.sh启动tomcat 出现This file is needed to run this program 原因.sh文件都不是可执行文件,于是找到命令: chmod +x * ...