HDU3400(三分)
来源:互联网 发布:steam mac版怎么安装 编辑:程序博客网 时间:2024/06/05 07:20
思路:设a为AB上一点,d为CD上一点,分别对a到A的距离和d到D的距离三分(对应的时间的变化均为凹函数),每次先枚举a的距离,再对d到D 的距离三分出此时对应的最小时间,直到a到A的距离枚举完,得到最小时间。
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#define eps 1e-8using namespace std;struct node{ double x,y;};node A,B,C,D;double P,Q,R;double ab,cd;double dist(node a, node b){ return sqrt(eps+((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));}double ansCD(double tmp){ node a,d; a.x=A.x+(B.x-A.x)/ab*tmp,a.y=A.y+(B.y-A.y)/ab*tmp; double mid,midmid; double low=0, high=dist(C,D); while(low+eps<high) { mid=(low+high)/2; d.x=D.x+(C.x-D.x)/cd*mid,d.y=D.y+(C.y-D.y)/cd*mid; double cmid=dist(a,d)/R+mid/Q; midmid=(mid+high)/2; d.x=D.x+(C.x-D.x)/cd*midmid,d.y=D.y+(C.y-D.y)/cd*midmid; double cmidmid=dist(a,d)/R+midmid/Q; if(cmid>cmidmid) low=mid; else high=midmid; } return dist(a,d)/R+midmid/Q;}double ansAB(){ double mid,midmid; double low=0,high=dist(A,B); while(low+eps<high) { mid=(low+high)/2; midmid=(mid+high)/2; double cmid=mid/P+ansCD(mid); double cmidmid=midmid/P+ansCD(midmid); if(cmid>cmidmid) low=mid; else if(cmid<cmidmid) high=midmid; else if(cmid==cmidmid) break; } return mid/P+ansCD(mid);}int main(){ int T; scanf("%d",&T); while(T--) { node tmp; tmp.x=0,tmp.y=0; scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y); scanf("%lf%lf%lf",&P,&Q,&R); ab=dist(A,B),cd=dist(C,D); printf("%.2lf\n",ansAB()); } return 0;}
0 0
- hdu3400(三分套三分)
- HDU3400(三分)
- HDU3400+三分
- HDU3400 三分
- HDU3400(三分)
- hdu3400 两次三分
- hdu3400 两重三分
- [HDU3400]三分求极值
- hdu3400 Line belt_嵌套三分
- HDU3400 Line belt (几何+三分)
- hdu3400 Line belt 【三分搜索】
- 三分搜索--hdu3400 Line belt
- hdu3400 _嵌套三分 三分求极限
- 二分、三分小结(ZOJ3203 HDU2438 HDU4717 HDU2199 POJ3737 HDU4355 HDU3400 HDU4004)
- 三分求最小值——HDU3400
- hdu3400
- HDU3400
- 09-04 HDU_Steps4.1 二分三分 HDU2199 HDU2899 HDU1967 HDU2141 HDU2298 HDU1597 HDU2438 HDU3400
- EHCache概念,配置文件,使用示例
- 数据结构之双向链表(JAVA实现)
- 开发一款C语言小游戏——骑士飞行棋
- 树莓派摄像头视频直播技术汇总
- 搜索二叉树
- HDU3400(三分)
- C++关于引用问题
- 数据结构和算法学习笔记-2
- 把握linux内核设计思想(三):下半部机制之软中断
- #define的一些使用方法
- iOS开发:iOS中几种数据持久化方案:你要永远地记住!
- c++问题
- 内存空间的一般性区域分布图
- hibernate 一对一映射的两种方式