题意: 有两条线段,在其中一条线段上移动的速度为 v1,在另一条线上速度为v2, 在其他地方移动速度为 r,问从其中一条线段的一个端点移动到另一个线段

的一个端点的最少时间。

分析: 在其中一条线段上三分离开的点,枚举之后再进行一次三分求最优解,关键在于看出函数是凸性的。

#include<stdio.h>
#include<string.h>
#include<math.h>
const double eps=1e-6;
struct node
{double x,y;
};
double dis(node a,node b)
{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double v1,v2,R;double tcal(node a,node c,node d)
{node l,r;node mid,midmid;double l1,l2;l=c;r=d;while(dis(l,r)>=eps){mid.x=(l.x+r.x)/2;mid.y=(l.y+r.y)/2;midmid.x=(mid.x+r.x)/2;midmid.y=(mid.y+r.y)/2;l1=dis(a,mid)/R+dis(mid,d)/v2;l2=dis(a,midmid)/R+dis(midmid,d)/v2;if(l1>l2)l=mid;else r=midmid;}return l1;
}double cal(node a,node b,node c,node d)
{node l,r;node mid,midmid;double l1,l2;l=a;r=b;do{mid.x=(l.x+r.x)/2;mid.y=(l.y+r.y)/2;midmid.x=(mid.x+r.x)/2;midmid.y=(mid.y+r.y)/2;l1=dis(a,mid)/v1+tcal(mid,c,d);l2=dis(a,midmid)/v1+tcal(midmid,c,d);if(l1>l2)l=mid;else r=midmid;}while(dis(r,l)>=eps);return l1;}int main()
{node a,b,c,d;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",&v1,&v2,&R);printf("%.2lf\n",cal(a,b,c,d));}return 0;
}

转载于:https://www.cnblogs.com/dream-wind/archive/2012/09/05/2672302.html

HDU 3400 Line belt【三分法】相关推荐

  1. HDU 3400 Line belt (三分)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3400 题意:给定两条线段AB,CD,在这两条线段上速度分别为P,Q,在其他地方速度为R,让求A 到 D ...

  2. 【HDU 3400】Line belt(三分法)

    题目链接 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3400 题意 有两条传送带AB和CD,移动速度分别为p,q. 除了传送带的其他区域移动速度为r ...

  3. HDU 6631 line symmetric(枚举)

    首先能想到的是至少有一对相邻点或者中间间隔一个点的点对满足轴对称,那么接下来只需要枚举剩下的点对是否满足至多移动一个点可以满足要求. 第一种情况,对于所有点对都满足要求,那么Yes. 第二种情况,有一 ...

  4. 三分法与二分法的区别和三分法总结

    三分法介绍 在区间内用两个mid将区间分成三份,这样的查找算法称为三分查找,也就是三分法,三分法常用于求解单峰函数的最值.          还有一种理解,即在二分查找的基础上,在左区间或者右区间上再 ...

  5. 三分法求解凸函数的最值

    转了牛人的: 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值.但当函数是凸性函数时,二分法就无法适用,这时三分法就可以"大显身手"-- 如图,类似二分的定义Left ...

  6. 【专题】三分法和牛顿迭代法总结

    下面总结两种迭代方法:三分法和牛顿迭代 1.三分法 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值.但当函数是凸性函数时,二分法就无法适用,这时三分法就可以大显身手. 如下凸函数: 类 ...

  7. c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法

    本系列是这本算法教材的扩展资料:<算法竞赛入门到进阶>. 罗勇军.郭卫斌. 清华大学出版社 二分法和三分法是算法竞赛中常见的算法思路,本文介绍了它们的理论背景.模板代码.典型题目. 1. ...

  8. 二分法、三分法 --算法竞赛专题解析(1)

    本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 2019.8 网购:京东 当当      作者签名书 如有建议, ...

  9. HDU3400(计算几何中的三分法利用)

    题目:Line belt 题意:就是给你两条线段AB , CD ,一个人在AB上跑速度p, 在CD上跑q,在其他地方跑速度是r.问你从A到D最少的时间是好多. #include<iostream ...

最新文章

  1. 做图形处理Linux小型主机,8个优秀的linux图形图像工具
  2. swift和OC - 拆分数组 和 拆分字符串
  3. 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??
  4. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解
  5. 技术分享丨关于 Hadoop 的那些事儿
  6. luogu4407 [JSOI2009]电子字典 字符串hash + hash表
  7. 数据结构 - 二叉树 - 面试中常见的二叉树算法题
  8. html+radio设置背景图片,jquery – 用单选按钮更改背景图像
  9. 亮度 调整_摄影后期必备!如何用亮度蒙版技术精准调整照片影调
  10. java回忆录—输入输出流详细讲解(入门经典)
  11. Activity的Launch mode详解,A B C D的singleTask模式
  12. python软件-Python软件下载|Python最新版本v3.5.1 下载_当游网
  13. 3、SpringBoot集成Storm WorldCount
  14. sybase 珍藏系列之一
  15. 虚拟机安装centeros7镜像
  16. docker 入门 —— docker 镜像命令
  17. 如何安装纯净版系统,如何给服务器安装系统
  18. 【Metal学习笔记】--02.调用Metal-cpp从零编写C++程序
  19. Ubuntu显示WiFi信号强度
  20. excel 2007数据透视表教程

热门文章

  1. phpStorm安装xDebug
  2. Selenium2 Python 自己主动化測试实战学习笔记(五)
  3. Android中加载事件的方式
  4. Mysql,ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
  5. PC远程调试移动设备
  6. Single forest vs. multi-forest Active Directory design
  7. 监视Rails进程内存泄漏的技巧
  8. 云主机superset接入redis缓存
  9. SVM推导过程及SMO详细求解过程(转载+自己笔记)
  10. 最简洁的y460显卡切换安装方式