三个地点构成一个三角形。

判断一下两个人能否一起到shop然后回家,如果不能:

两个人一定在三角形内部某一点分开,假设沿着直线走,可以将问题简化。

三分从电影院出来时候的角度,在对应的直线上二分出一个分离点即可。

三分角度的方法:在shop和home两个点之间找一个点p,链接p和电影院,在这个线段上面二分出分离点。

注意:精度。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
#define sqr(x) ((x)*(x))
#define eps 1e-6 struct POINT {
double x, y;
POINT() {}
POINT(double _x, double _y): x(_x), y(_y) {}
} c, s, h;
double t1, t2; double dist(POINT &x, POINT &y) {
return sqrt(sqr(x.x-y.x) + sqr(x.y-y.y));
}
double calc(double m) {
POINT a = POINT(s.x*(1-m) + h.x*m, s.y*(1-m) + h.y*m);
POINT b;
double ac = dist(a, c);
double ah = dist(a, h);
double as = dist(s, a);
if (ac + ah <= t2 && ac + as <= t1) {
return min(t2-ah, t1-as);
}
double l = 0, r = 1, mid, la, lb, lc;
for (int i=0; i<300; i++) {
mid = (l + r)/2.0;
b = POINT(c.x*(1-mid) + a.x*mid, c.y*(1-mid) + a.y*mid);
la = dist(b, c);
lb = dist(b, h);
lc = dist(b, s);
if (la+lb<=t2 && la+lc<=t1) l = mid;
else r = mid;
}
b = POINT(c.x*(1-l) + a.x*l, c.y*(1-l) + a.y*l);
return dist(b, c);
}
int main() { cin >>t1>>t2>>c.x>>c.y>>h.x >> h.y >> s.x>> s.y;
double la, lb, lc;
la = dist(c, s);
lb = dist(c, h);
lc = dist(s, h); if (lb + t2 >= la + lc) {
printf("%.10lf\n", min(lb+t2, la+lc+t1));
return 0;
}
t1 += la + 1e-10;
t2 += lb + 1e-10; double l = 0, r = 1, lm, rm, ans = 0, v1, v2;
for (int i=0; i<300; i++) {
lm = (2*l + r)/3.0, rm = (2*r + l)/3.0;
v1 = calc(lm), v2 = calc(rm);
ans = max(ans, max(v1, v2));
if (v1 < v2) l = lm;
else r = rm;
} printf("%.10lf\n", ans); return 0;
}

CF 8D Two Friends 【二分+三分】的更多相关文章

  1. 第二次组队赛 二分&三分全场

    网址:CSUST 7月30日(二分和三分) 这次的比赛是二分&三分专题,说实话以前都没有接触过二分,就在比赛前听渊神略讲了下.......不过做着做着就对二分熟悉了,果然做题是学习的好方法啊~ ...

  2. CF 8D Two Friends (三分+二分)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...

  3. CF 8D two friends

    独立想的好开心呀(然而是一道水题). 可以看出这道题的答案是满足单调性的,然后可以考虑二分. 对于当前二分出的mid值,我们考虑这个过程. 假设他们能共同走到shop然后共同会home $$Ans = ...

  4. HDU 2298 Toxophily 【二分+三分】

    一个人站在(0,0)处射箭,箭的速度为v,问是否能够射到(x,y)处,并求最小角度. 首先需要判断在满足X=x的情况下最大高度hmax是否能够达到y,根据物理公式可得 h=vy*t-0.5*g*t*t ...

  5. codeforces 8D Two Friends 二分+ 判断三个圆是否有公共交点

    题目链接 有两个人x, y, 现在在A点, x要直接去B点, y要先去C点在去B点, 现在给出x, y两人可以行走的最大距离T1, T2, 求出他们从A点出发之后, 可以走的最长的公共路径. 我们先看 ...

  6. Codeforces Gym100543B 计算几何 凸包 线段树 二分/三分 卡常

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543B.html 题目传送门 - CF-Gym100543B 题意 给定一个折线图,对于每一条 ...

  7. Toxophily-数论以及二分三分

    G - Toxophily Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  8. CodeForces - 1059D——二分/三分

    题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分.我们二分半径,然后由于固定了与X轴相切,我们对于每一个点 ...

  9. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)

    题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...

随机推荐

  1. 简单实用 “易忘” 的SQL 语句语法,新老皆宜

    --创建数据库 create database 数据库名 on primary ( name='数据库名_data',  filename='数据库储存路径', size=数据库初始大小(MB),   ...

  2. web标准(复习)--7 横向导航菜单

    今天我们开始学习html列表,包含以下内容和知识点: 横向列表菜单 用图片美化的横向导航 css Sprites 一.横向列表菜单前边学习过纵向导航菜单,又学习了float属性,那么要实现横向导航菜单 ...

  3. Java实现生产者消费者问题与读者写者问题

    摘要: Java实现生产者消费者问题与读者写者问题 1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从 ...

  4. Javascript 开发IDE

    俗话说,工欲行其事,必先利其器.开发的时候有一款好的IDE,对开发效率的提升是非常帮助的,在此强烈推荐Webstorm,官网网址http://www.jetbrains.com/webstorm/ 主 ...

  5. IE6~9的css hack写法

    _color: red; /* ie6 */ *color: red; /* ie6/7 */ +color: red; /* ie6/7 */ color: red\0; /* ie8/9 */ c ...

  6. discuz3.2x增加邮箱验证功能

    为防止垃圾用户多次注册,为disczu增加邮箱验证功能. 大致分为二步: 1.申请邮箱,这里推荐使用腾讯免费企业邮箱:https://exmail.qq.com/portal/introducefre ...

  7. C# 过滤SerialPort端口

    C#中的SerialPort类只能通过SerialPort.GetPortNames()来获取端口名字,而且出来都是COM+数字的字样,如果我要识别COM端口是什么设备的,它就无能为力了,此时我们可以 ...

  8. [Python 3.x 官方文档翻译]Whetting Your Appetite 欢迎您的使用

    If you do much work on computers, eventually you find that there’s some task you’d like to automate. ...

  9. Java学习笔记--Socket和ServerSocket

    参考资料: http://haohaoxuexi.iteye.com/blog/1979837http://zhidao.baidu.com/link?url=OeOSa0YbOzSbMVPa8sgP ...

  10. LeetCode_Unique Paths II

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...