CF 935 C. Fifa and Fafa 几何(贪心,相似)

题意:给出圆心(x1,y1)及其半径R的圆A. 和一个非法点(x2,y2)B 
求出一组(x,y,r)使得其覆盖的范围在圆内 要求不能覆盖非法点 并且覆盖的面积为最大. 0<=|x|,|y|<=1e5


新的圆C(x,y,r)肯定和点B已经和圆A相切 否则可以扩大半径 偏移圆心使得 覆盖面积增大.
落在圆A上的切点Q肯定圆上离点B最远点,则BQ经过圆A的半径 同样经过圆C的半径 

画图得r=(R+dis)/2 根据三角形相似算出圆心坐标即可.

#include 
using namespace std;
typedef long double ld;
const int N=2e5+5;
ld R,x,y,x2,y2;
ld dis(ld x,ld y,ld a,ld b)
{
	return sqrt((x-a)*(x-a)+(y-b)*(y-b));
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>R>>x>>y>>x2>>y2;
	ld d=dis(x,y,x2,y2);
	if(d>=R)
	{
		cout<


你可能感兴趣的:(Codeforces,泛做,数学,------,计算几何)