把a,d这两个起点和终点之间的中间点三分出来。
其他没什么。
/*
两次三分
题意:给定abcd四个点(包括速度,位置),从a到d,求最短时间。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
const int maxn = 105;
const double eps = 1e-8;
const double pi = acos(-1.0);
struct Point {
double x,y;
};
Point a,b,c,d;
double P,Q,R,ans1,ans2;
double dis( Point aa,Point bb ){
return sqrt( (aa.x-bb.x)*(aa.x-bb.x)+(aa.y-bb.y)*(aa.y-bb.y) );
}
double GetAns( double tt1,double tt2 ){
double ans;
Point temp1,temp2;
temp1.x = a.x+tt1*(b.x-a.x),temp1.y = a.y+tt1*(b.y-a.y);
temp2.x = c.x+tt2*(d.x-c.x),temp2.y = c.y+tt2*(d.y-c.y);
ans = dis( a,temp1 )/P+dis( temp1,temp2 )/R+dis( temp2,d )/Q;
return ans;
}
double solve( double x ){
double L,R,mid1,mid2;
L = 0;
R = 1;
while( R-L>eps ){
mid1 = (L+R)/2.0;
mid2 = (mid1+R)/2.0;
if( GetAns( x,mid1 )<GetAns( x,mid2 ) ){
ans2 = mid1;
R = mid2;
}
else{
ans2 = mid2;
L = mid1;
}
}
return GetAns( x,ans2 );
}
int main(){
int T;
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);
double L,R,mid1,mid2;
L = 0;
R = 1;
while( R-L>eps ){
mid1 = (L+R)/2.0;
mid2 = (mid1+R)/2.0;
if( solve( mid1 )<solve( mid2 ) ){
ans1 = mid1;
R = mid2;
}
else{
ans1 = mid2;
L = mid1;
}
}
printf("%.2lf\n",GetAns( ans1,ans2 ));
}
return 0;
}
分享到:
相关推荐
【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...
HDU、PKU和URAL是三个著名的在线编程竞赛平台,它们为程序员提供了丰富的算法题目,帮助参赛者提升编程技能和算法理解能力。这些平台的题目通常涵盖了基础算法、数据结构、数学逻辑等多个方面,对于准备各类编程竞赛...
7. 童年生活二三事 递推题(1007):本题目是关于递推算法的应用,需要使用合适的递推策略来解决问题。 知识点:递推算法、递推策略 8. University 简单 hash(1008):本题目是关于哈希表的基础知识,需要使用...
三、算法进阶:复杂度分析与优化 在ACM竞赛中,时间复杂度和空间复杂度是衡量解题效率的重要指标。学习如何分析和优化算法复杂度,如采用贪心策略、分治法、回溯法、动态规划等,是提高解题能力的关键。对于特定...
- **1097**、**1098**、**1099**:这三个题目都是数学题,分别要求参赛者注意到规律、找规律以及通过枚举法解决问题。 ##### 2. 数据结构类题目 - **1022**:数据结构题目,重点在于栈的应用,这类题目通常要求对栈...
本文将详细解析“最短路径海滨练习”、“背包问题专题练习”以及“BFS练习”三个主题,深入探讨每个题目背后的算法原理与应用场景。 ### 最短路径海滨练习 #### 1. AWalkThroughtheForest (森林之旅) - **问题描述...
本资料包聚焦于三大OJ平台——PKU(北京大学)、HDOJ(杭州电子科技大学)和ZOJ(浙江大学),它们都提供了丰富的题目资源,尤其是针对不同算法的分类,对于学习和准备ACM(国际大学生程序设计竞赛)或者其他算法...
HDU ACM代码集合是针对ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)的一份资源,这个压缩包中的代码涵盖了多种算法,是参赛者或对算法学习感兴趣的人宝贵的参考资料。ACM竞赛旨在...
这些题目来自于杭州电子科技大学的在线评测系统HDU的题集,涵盖了从2000到2009的编号。这些题目旨在测试编程者的基本算法理解、数学计算能力以及问题解决技巧。以下是对这些题目中涉及知识点的详细解释: 1. **2000...
对于初学者来说,首先要了解基础数据结构,如数组、链表、栈、队列、树、图等,以及基本的搜索和排序算法,如二分查找、冒泡排序、快速排序等。这些知识是解决ACM问题的基础。 二、杭电OJ系统介绍 杭电OJ是在线进行...
本报告围绕“ACM.rar”这个压缩包,我们将深入探讨其中涉及到的三道题目——HDU1010、ZOJ1010和ZOJ1015,并分享一些原创解题思路,尽管这些算法可能并非最优,但它们为我们提供了一种独特的视角来理解和解决问题。...
在这个解题报告中,我们看到两个具体的杭电(HDU)在线判题系统上的题目,它们都是关于使用1分、2分、5分硬币组合成不同金额的问题。 首先,我们来看第一个题目【hdu 2566】。这是一个典型的组合问题,题目要求找出...
【ACM程序设计】是ACM(国际大学生程序设计竞赛)的一种教学材料,通常由各大高校的教练或教师提供,旨在帮助参赛者提升算法和编程技能。本篇教案来自杭州电子科技大学,由刘春英教授编写。教程内容涵盖了解决实际...
三、文件的组织与存储 在FileSystem-hdu中,文件被组织成树状结构,即目录与子目录的嵌套关系。每个文件都有一个唯一的路径名,由一系列的目录名和文件名组成,如“/home/user/file.txt”。这种结构便于文件的分类和...
2. 有三堆扑克牌(比如:可以分别是 5、7、9 张); 3. 游戏双方轮流操作; 4. 玩家的每次操作是选择其中某一堆牌,然后从中取走任意张; 5. 最后一次取牌的一方为获胜方。 五、Nim-Sum Nim-Sum 是一种用于 Nim ...
- RGB模型是最常见的彩色模型,由红、绿、蓝三种颜色组合而成。 - YCbCr和CMYK模型常用于打印和视频,分别对应亮度和两个色差信号,以及青、洋红、黄色和黑色的组合。 9. 图像配准: - 将两幅或多幅图像对齐,以...
1. 数字图像的定义和分类:数字图像是指使用数字信号表示的图像,分类有二维图像和三维图像。 2. 图像处理的基本概念:图像处理包括图像增强、图像恢复、图像压缩、图像分割、图像识别等。 3. 图像表示:图像可以用...
三分法常用于解决一些实际问题中的优化问题,尤其是当公式难以推导出来时,三分法可以较为精确地求解出一些临界值,并且效率也很高。灵活应用这些方法对于解决问题会有很大帮助。 总之,二分查找及其变种(如三分法...