2013湘大ACM多省比赛-hurry up
来源:互联网 发布:qq做图软件 编辑:程序博客网 时间:2024/04/26 00:06
题目连接
题意:没什么可谈的,就是一个几何+三分查找题,列出关系式,在x1到x2之间找出最小值,该函数是一个凸函数,利用三分查找,是最合适不过了。
要注意精度。
代码:
#include<stdio.h>#include<math.h>#define eps 1e-8double v1,v2,low,high;int sign(double x){return x < -eps ? -1 : x > eps;}double count(double a,double b,double c,double d){return sqrt((a-c)*(a-c)+(b-d)*(b-d));}double search(double x1,double y1,double x2,double y2 ){double mid1,mid2,min;while(sign(high - low) >=0) //eps代表精度 {mid1=(low+high)/2;mid2=(mid1+high)/2;double L=count(x1,y1,mid1,0)/v1+count(x2,y2,mid1,0)/v2;double r=count(x1,y1,mid2,0)/v1+count(x2,y2,mid2,0)/v2;if(sign(L-r) < 0){ high=mid2-eps; min=L;}else { low=mid1+eps; min=r;}}return min;}int main(){int n;double x1,x2,y1,y2;scanf("%d",&n);while(n--){scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&v1,&v2);double w=count(x1,y1,x2,y2)/v1;low=x1<x2?x1:x2;high=x2>x1?x2:x1; double t=search(x1,y1,x2,y2);if(w<t) printf("%.2lf\n",w);else printf("%.2lf\n",t);}return 0;}/*101 1 2 2 1 70 3 4 0 1 20 3 6 0 2 4*/
- 2013湘大ACM多省比赛-hurry up
- Hurry Up
- Hurry Up
- Hurry Up
- hurry up
- Hurry Up
- Hurry Up
- Hurry Up
- Hurry Up
- 2013湘潭赛 Hurry Up 三分算法
- XT 1175 Hurry Up
- Hurry Up(三分)
- XTU1175:Hurry Up(三分)
- XTU-1175 Hurry Up
- Lesson Fourty three Hurry up!
- Lesson 43 Hurry up! 快点!
- ONLY 24 days to go! Hurry up!
- Lesson Forty-Three Hurry up! 快点!
- 如何用DLL来控制MT4的(54个主要函数)
- ipsec协议
- 本人集合了几项资源,需要的朋友下载哦,不需要分数,定下人气就好
- 每天一指令2
- LINUX-sendmail
- 2013湘大ACM多省比赛-hurry up
- vsftp磁盘配额管理
- Linux FTP基础
- android新浪微博开发failed to receive access token 的解决办法
- 【转】完全用Linux工作(王垠)
- JAVA实现屏幕抓图
- 几个fork面试题目的验证
- 发生系统错误1067
- 实验2 类的定义与应用