题意:

     题意给你两个公路 A-B C-D 和三个速度V(ab) V(cd) 和 V(两条公路之间) 问你从A到D的最短时间是多少.

思路:

   一开始暴力了其中的一条边,每次加0.01,另一条边用的三分,结果wa掉了,感觉不wa暴力一条边时间上也够呛,后来看了下题解,人家用的是两重三分,就是三分其中一条边,当对于最外层的那个三分的某两个点也就是 mid mmid,我们在三分两次,取得最优,

确实如此,因为后来想了想,对于整体来说,总函数里面有两个未知数,无法确定是他的性质,

但是如果我们分开来想,分成两部分,那么他们就含有凸性(或凹性)了,这样我们就可以三分在短时间内找到精度满足条件的解..


#include<stdio.h>
#include<math.h> #define eps 0.0001

typedef struct
{
double
x ,y;
}
NODE; NODE A ,B ,C ,D;
double
P ,Q ,R; double dis(NODE X ,NODE Y)
{
double
tmp = pow(X.x - Y.x ,2.0) + pow(X.y - Y.y ,2.0);
return
sqrt(tmp);
} double
CD_3F(NODE now)
{

NODE low ,up ,mid ,mmid;
double
t1 ,t2;
low = C ,up = D;
while(
1)
{

mid.x = (low.x + up.x) / 2;
mid.y = (low.y + up.y) / 2;
t1 = dis(now ,mid) / R + dis(mid ,D) / Q; mmid.x = (mid.x + up.x) / 2;
mmid.y = (mid.y + up.y) / 2;
t2 = dis(now ,mmid) / R + dis(mmid ,D) / Q; if(t1 > t2) low = mid;
else
up = mmid; if(dis(low ,up) < eps) break;
}
return
t2;
} double
AB_3F()
{

NODE low ,up ,mid ,mmid;
low = A ,up = B;
double
t1 ,t2;
while(
1)
{
//puts("ok");
mid.x = (low.x + up.x) / 2;
mid.y = (low.y + up.y) / 2;
t1 = dis(A ,mid) / P + CD_3F(mid); mmid.x = (mid.x + up.x) / 2;
mmid.y = (mid.y + up.y) / 2;
t2 = dis(A ,mmid) / P + CD_3F(mmid); if(t1 > t2) low = mid;
else
up = mmid; if(dis(low ,up) < eps) break;
}
return
t1;
} 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);
printf("%.2lf\n" ,AB_3F());
}
return
0;
}

最新文章

  1. gdb注意事项
  2. volley(4) 请求参数:data:[ { bar_remain:XX , bar_code:&quot;XX&quot; , bar_id: XX}], method:GET
  3. MyBatis Mapper 文件例子
  4. 详解Spring中的CharacterEncodingFilter--forceEncoding为true在java代码中设置失效--html设置编码无效
  5. Java获取随机数的几种方法
  6. js播放器
  7. 在js中如何得到上传文件的大小。
  8. TestNG--入门介绍教程
  9. postman安装使用教程---图文讲解
  10. js基础语句
  11. 我的java学习之旅--一些基础
  12. [记录] Ubuntu 配置Apache虚拟站点
  13. 代码:css小图标
  14. # fabirc 配置多组服务器 密码与密钥一起使用 key_filename的设置
  15. BW处理链(Process Chain)
  16. .net core 第一篇选择开发工具和环境
  17. The Child and Zoo 题解
  18. django 项目使用setting文件里定义的变量方法
  19. 【C#】清除webBrowser 缓存和Cookie的解决方案
  20. C#设计模式原则

热门文章

  1. Hi3559AV100外接UVC/MJPEG相机实时采图设计(一):Linux USB摄像头驱动分析
  2. 剑指 Offer 10- II. 青蛙跳台阶问题
  3. CCF(数据中心):最小生成树+kruskal算法
  4. 完全使用 VSCode 开发的心得和体会
  5. Gevent高并发网络库精解
  6. WinForm的Socket实现简单的聊天室 IM
  7. PTA 二叉树的层次遍历
  8. python基础之流程控制(2)
  9. seq 命令用法
  10. 使用Gensim库对文本进行词袋、TF-IDF和n-gram方法向量化处理