博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3400(三分套三分)
阅读量:5153 次
发布时间:2019-06-13

本文共 1834 字,大约阅读时间需要 6 分钟。

题意:平面上两条线段 AB,CD。

A到B的速度v1,C到D的速度v2,其它地方的速度V3。

求A到D的最短时间。

解法:三分嵌套三分。首先假设AB上的点确定后。确定CD的点的确定应该是符合三分性质的,应该是单调或最多凸型分布的。

那么确定AB上的点,也应该不会出现多个峰谷吧。

没有严格证明,是知道有个这个三分嵌套三分的题目才来做的。

代码:

/******************************************************* author:xiefubao*******************************************************/#pragma comment(linker, "/STACK:102400000,102400000")#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//freopen ("in.txt" , "r" , stdin);using namespace std;#define eps (1e-8)const double pi=acos(-1.0);typedef long long LL;const int Max=10100;const int INF=1000000007;struct point{ double x,y;} points[4];double s1,s2,s3;double gettime(const point& a,const point& b,double speed){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))/speed;}double getlen(double rat1,double rat2){ double ans=0; point p1; p1.x=points[0].x+(points[1].x-points[0].x)*rat1; p1.y=points[0].y+(points[1].y-points[0].y)*rat1; point p2; p2.x=points[3].x+(points[2].x-points[3].x)*rat2; p2.y=points[3].y+(points[2].y-points[3].y)*rat2; ans=gettime(points[0],p1,s1)+gettime(p1,p2,s2)+gettime(p2,points[3],s3); return ans;}double solve(double m){ double l=0,r=1.0; while(r-l>eps) { double mid=(r+l)/2.0; double midr=(mid+r)/2.0; if(getlen(m,mid)>getlen(m,midr)) l=mid; else r=midr; } return getlen(m,l);}int main(){ int t; cin>>t; while(t--) { for(int i=0; i<4; i++) scanf("%lf%lf",&points[i].x,&points[i].y); scanf("%lf%lf%lf",&s1,&s3,&s2); double l=0,r=1; while(r-l>eps) { double mid=(l+r)/2.0; double midr=(mid+r)/2.0; if(solve(mid)>solve(midr)) l=mid; else r=midr; } printf("%.2f\n",solve(r)); } return 0;}
 

转载于:https://www.cnblogs.com/mqxnongmin/p/10500478.html

你可能感兴趣的文章
javascript设计模式-迭代器模式(Iterator)
查看>>
供参考的前端网站链接
查看>>
阿里官方Java代码规范标准
查看>>
大一下半年学期总结
查看>>
Count And Say
查看>>
解决 Ubutnu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed
查看>>
python矩阵
查看>>
【转】ASCII码表在线查询
查看>>
vim插件
查看>>
【转】TestFlight APP测试(IOS如何让上架前给其他人测试)
查看>>
websocket --工作原理
查看>>
xampp安装及配置
查看>>
C++中四种类型转换方式
查看>>
推荐一些国内的Jquery CDN免费服务
查看>>
【outPut_Class 输出类】使用说明
查看>>
单独使用CKfinder上传图片
查看>>
动态网站爬取实例
查看>>
POJ 2406
查看>>
tableView的性能优化
查看>>
Mysqle 常用 函数
查看>>