这题之前在poj做过,搬过来居然RE,重写了一遍
题意就是给n个点,就是图中的实线的顶点,然后问虚线的长度
虚线要求每处距离定点都要大于r
解法,求n个点的凸包长度,再加上2*PI*r
PI是圆周率,就是答案,至于为什么,看下图就懂了
上代码。
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstdio>
#include<stack>
#define PI acos(-1.0)
using namespace std;
class point
{
public:
double x,y;
void init()
{
scanf("%lf %lf",&x,&y);
}
double dist(point a)
{
return sqrt((a.x-x)*(a.x-x)+(a.y-y)*(a.y-y));
}
}p[100100];
bool operator==(point a,point b)
{
return a.x==b.x&&a.y==b.y;
}
class CVector//向量
{
public:
double x,y;
};
CVector operator-(point a,point b)
{