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

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

求A到D的最短时间。

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

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

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

代码:

/******************************************************
* author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <string.h>
//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;
}

 

hdu3400(三分套三分)的更多相关文章

  1. BZOJ 1857 传送带 (三分套三分)

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...

  2. 【BZOJ-1857】传送带 三分套三分

    1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][ ...

  3. bzoj1857: [Scoi2010]传送带--三分套三分

    三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...

  4. 三分套三分 --- HDU 3400 Line belt

    Line belt Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一 ...

  5. [luogu2571][bzoj1857][SCOI2010]传送门【三分套三分】

    题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...

  6. 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)

    1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...

  7. 【BZOJ1857】[Scoi2010]传送带 三分套三分

    [BZOJ1857][Scoi2010]传送带 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度 ...

  8. 【BZOJ1857】传送带(分治经典:三分套三分)

    点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...

  9. loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)

    题目描述 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxh ...

  10. 最小球覆盖——模拟退火&&三分套三分套三分

    题目 给出 $N(1 \leq N \leq 100)$ 个点的坐标 $x_i,y_i,z_i$($-100000 \leq x_i,y_i,z_i \leq 100000$),求包围全部点的最小的球 ...

随机推荐

  1. git在工作中的用法总结-环境安装篇

    使用git有很长一段时间了 ,平时用到的时候都是直接google,经常用到的一些也记录在笔记中,但有时候笔记太多,实在是太乱了(其实是我太懒~ 哈?),找都要半天的时候还不如直接google,今天有空 ...

  2. MySQL查看 InnoDB表中每个索引的高度

    我们都知道MySQL里,索引通常用B+树来实现的.B+树的叶子结点才具体保存数据(聚簇索引保存的是行数据:普通索引是主键,如有需要得回表),非叶子结点都是用来索引叶子结点的.假设索引高度为h,那么每次 ...

  3. K均值聚类

    聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...

  4. VPS杂谈(一)

    1. VPS购买推荐 可参考:http://www.laozuo.org/myvps 2. VPS配置SSH端口号 购买的VPS的主机,一般情况下端口号不是22,被改成了其它的,这个时候为了方便自己的 ...

  5. Linux tar 命令用法

    tar 命令可以为linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar 最初被用来在磁带上创建档案,现在,用户 ...

  6. jQuery 【选择器】【动画】

    jQuery 是一个快速.简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画设计和Ajax交互. ...

  7. 【easyui】关于easyui Datagrid一些样式记录

    此篇文章主要记录在使用datagrid中常见的修改样式方式以及样式效果配图!!!! 一丶存在选中框的时候标题栏合并显示序号字段. 代码展示: onLoadSuccess: function (data ...

  8. 单机安装Hadoop

    单机安装hadoop ------------------------------------------------------------------ 操作系统:centos7 64 位 hado ...

  9. 微信小程序顶部(navigationBar)设置为透明

    我记得在微信小程序中导航栏的颜色可以在app.json.  window里面添加navigationBarBackgroundColor属性,但是颜色只能为纯色.不能使用rgb,或者rgba的色号. ...

  10. 【代码笔记】Web-HTML-简介

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...