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

判断一下两个人能否一起到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. var foo= {} ;foo.method() 和 单例模式有什么区别

    var Foo={} Foo.method = function() { var i = 0; return { a:function(){ console.log('aa', i++); }, b: ...

  2. jquery mobile touch 实例

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  3. ECSTORE日期时间控件转换为时间戳的方法

    如果你在后台使用<{input type=”time” name=”time”}>的话,后台获取到的表单数据为: ["_DTYPE_TIME"]=> array( ...

  4. [T]各种字符串Hash函数比较

    常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法.这些函数使用位运算使得每一个字符都对最后的函数值产生影响.另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎 ...

  5. Oracle AWR

    http://www.linuxidc.com/Linux/2011-10/44563.htm http://t.askmaclean.com/thread-3227-1-1.html http:// ...

  6. MySQL常用时间函数

    官方文档:Date and Time Functions Name Description ADDDATE() Add time values (intervals) to a date value ...

  7. Teach Yourself Scheme in Fixnum Days 6 recursion递归

    A procedure body can contain calls to other procedures, not least itself: (define factorial (lambda ...

  8. Ushare应用

    Ushare应用 Openwrt 系统功能强大,主要优势在于其开放性和可扩展性,Openwrt 安装ushare后,可将路由器变身为一个功能强大的家庭upnp流媒体服务器! 打开网上邻居,会显示发现u ...

  9. 黑马程序员_Java面向对象3_多态

    5.面向对象_多态 多态定义:某一种事物存在的多种形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型. 猫 x = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物. 动物 y = n ...

  10. bzoj3038 上帝造题的七分钟2

    Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...