CF 8D Two Friends 【二分+三分】
三个地点构成一个三角形。
判断一下两个人能否一起到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 【二分+三分】的更多相关文章
- 第二次组队赛 二分&三分全场
网址:CSUST 7月30日(二分和三分) 这次的比赛是二分&三分专题,说实话以前都没有接触过二分,就在比赛前听渊神略讲了下.......不过做着做着就对二分熟悉了,果然做题是学习的好方法啊~ ...
- CF 8D Two Friends (三分+二分)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...
- CF 8D two friends
独立想的好开心呀(然而是一道水题). 可以看出这道题的答案是满足单调性的,然后可以考虑二分. 对于当前二分出的mid值,我们考虑这个过程. 假设他们能共同走到shop然后共同会home $$Ans = ...
- HDU 2298 Toxophily 【二分+三分】
一个人站在(0,0)处射箭,箭的速度为v,问是否能够射到(x,y)处,并求最小角度. 首先需要判断在满足X=x的情况下最大高度hmax是否能够达到y,根据物理公式可得 h=vy*t-0.5*g*t*t ...
- codeforces 8D Two Friends 二分+ 判断三个圆是否有公共交点
题目链接 有两个人x, y, 现在在A点, x要直接去B点, y要先去C点在去B点, 现在给出x, y两人可以行走的最大距离T1, T2, 求出他们从A点出发之后, 可以走的最长的公共路径. 我们先看 ...
- Codeforces Gym100543B 计算几何 凸包 线段树 二分/三分 卡常
原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543B.html 题目传送门 - CF-Gym100543B 题意 给定一个折线图,对于每一条 ...
- Toxophily-数论以及二分三分
G - Toxophily Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- CodeForces - 1059D——二分/三分
题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分.我们二分半径,然后由于固定了与X轴相切,我们对于每一个点 ...
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...
随机推荐
- HTML5比较实用的代码
增强IE兼容性 <!--[if IE]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js&q ...
- 编译protobuf-2.5.0中的错误处理
最近在编译protobuf-2.5.0源码的时候发现的错误已经应对方法 1. 在源码目录执行 ./configure 命令的时候,发生如下错误 error: C++ preprocessor &quo ...
- IE6双倍margin间距解决方法
虽然现在很少有人在用ie6了,但作为前端人员,是不的不面对的问题. 在ie6中,使用float后的元素,在margin—left,这是你会发现距离和你想的不一样,其他的浏览器又是正常的,增大margi ...
- IIC 概述之用IO模拟
最近做的一个项目,是基于IIC总线通信的传感器系统.由于另外一个传感器使用的是类IIC协议,而不是标准IIC,所以MCU不能与其通信,最后没有办法,只有通过I/O口模拟的方式实现IIC的总线通信.具体 ...
- cf B. Dima and Text Messages
http://codeforces.com/contest/358/problem/B 先按照题意说的构造一个字符串s,然后与对比的字符串T比较,看看在字符串T中顺序查找有没有字符串S的所有字符,有输 ...
- 算法导论(第三版) Exercises4.2(求最大和子数组的算法优化过程)
4.1-1 如所有元素都为负,则返回所有元素中最大的负数. 4.1-2(暴力法求最大和子数组) struct subarray { int start, end, sum; }; void brute ...
- [HEOI 2013 day2] SAO (树形动态规划)
题目大意 给一棵N个节点的有向树(N <= 1000),求其拓扑序列个数. 思路 我们将任意一个点作为根,用dp[i][j]表示以节点i为根的子树满足节点i在第j个位置上的拓扑序列的个数.在求节 ...
- android推送-PHP(第三方推送:个推)
在项目初期,就安卓推送功能怎么做,曾经参考过例如XMPP之类的推送方法.但苦于那些是些英文档案,又没太多时间研究,所以打算采用第三方推送(个推,极光推送等),后来在美图技术老大推荐下用采用个推. PS ...
- StretchDIBits使用方法
转自:http://blog.csdn.net/giantchen547792075/article/details/6996011 StretchDIBits 函数把DIB.JPEG.PNG图像中一 ...
- [Javascript] The JSON.stringify API
JSON (JavaScript Object Notation) is a standard method to serialize JavaScript objects and is common ...