Codeforces Round #465 (Div. 2) C. Fifa and Fafa (SB题)
2018-02-21 13:47
525 查看
题意是这样的:在大圆里找一个小圆,这个圆要求在不包括一个点的前提下,尽可能的大,输出圆心坐标和半径
比赛的时候很遗憾……差一点就A了,我们先来判断我们不包括的点的情况,如果这个点在圆的外面,那问题就很简单了,只要输出大圆就行
如果这个点在大圆内,那我们先考虑一般情况:
p点是我们不想包括的点,这个圆就是以p点到大圆圆心的延长线与大圆的交点为直径的圆,直径是p点和圆形的距离加上半径,小圆的圆心可以用相似三角形做出
假设p点正好在大圆圆心上,那么只要输出任意一个以半径为直径的圆就行。比赛的时候失了智,卡在了这……
比赛的时候很遗憾……差一点就A了,我们先来判断我们不包括的点的情况,如果这个点在圆的外面,那问题就很简单了,只要输出大圆就行
如果这个点在大圆内,那我们先考虑一般情况:
p点是我们不想包括的点,这个圆就是以p点到大圆圆心的延长线与大圆的交点为直径的圆,直径是p点和圆形的距离加上半径,小圆的圆心可以用相似三角形做出
假设p点正好在大圆圆心上,那么只要输出任意一个以半径为直径的圆就行。比赛的时候失了智,卡在了这……
#include <bits/stdc++.h> #include <cstring> #define ll long long #define fi first #define se second #define INF 0x3f3f3f3f; using namespace std; int main() { double R,x,x2,y,y2; cin>>R>>x>>y>>x2>>y2; if((x - x2 )*(x- x2) + (y - y2)*(y - y2) >= R * R) { cout<<setprecision(16)<<fixed<<x<<" "<<y<<" "<<R<<endl; } else { double dist = sqrt((x - x2 )*(x- x2)+(y - y2)*(y - y2)); double nr = dist+R; nr /= 2.0; if(x == x2 && y == y2) { return cout<<x<<" "<<y+0.5*R<<" "<<0.5*R,0; } double nx = x; double ny = y; nx = x2 + (x - x2)*nr/dist; ny = y2 + (y - y2)*nr/dist; cout<<setprecision(16)<<fixed<<nx<<" "<<ny<<" "<<nr<<endl; } return 0 ; }
相关文章推荐
- Codeforces Round #465 (Div. 2) C. Fifa and Fafa(计算几何)
- Codeforces Round #465 (Div. 2)-C-Fifa and Fafa(分类讨论:直线与圆相交)
- Codeforces Round #465 (Div. 2) C. Fifa and Fafa[几何]
- Codeforces Round #465 (Div. 2) C. Fifa and Fafa(圆问题,数论)
- 【Codeforces Round #465 (Div. 2) C】Fifa and Fafa
- Codeforces-935C:Fifa and Fafa
- Codeforces Round #465 (Div. 2) D. Fafa and Ancient Alphabet
- Codeforces Round #465 (Div. 2)-D-Fafa and Ancient Alphabet(概率)
- Codeforces Round #465 (Div. 2) A. Fafa and his Company 水题
- Codeforces Round #465 (Div. 2) D. Fafa and Ancient Alphabet
- Codeforces Round #465 (Div. 2)E. Fafa and Ancient Mathematics(CF935E)(树形动规)
- CodeForces 935C Fifa and Fafa 计算几何
- CF 935 C. Fifa and Fafa 几何(贪心,相似)
- Codeforces Round #465 (Div. 2) A. Fafa and his Company
- Codeforces Round #465 (Div. 2) B. Fafa and the Gates
- CF(935C - Fifa and Fafa)
- Codeforces Round #465 (Div. 2) D_Fafa and Ancient Alphabet_辗转相除求逆元&&DP
- Codeforces 935C Fifa and Fafa 题解 附平面几何基础:平面向量基本运算
- Codeforces Round #465 (Div. 2) D. Fafa and Ancient Alphabet
- Round #173(Div2) C. XOR and OR——整体性方法