ural 1020 Rope

寒假打算搞搞計算幾何。爲來年的省賽做準備。就按timus上面的題目分類切了計算幾何這一塊吧。

題目地址:http://acm.timus.ru/problem.aspx?space=1&num=1020

這題是最簡單的。有一些釘子,釘子是圓形,有半徑,互不相交,

要我們求出這個多邊形的周長,就是兩兩圓心之間的距離加上一個半徑爲r的圓的周長。

 

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;

const double pi = acos(-1.0);
struct node
{
	double x;
	double y;
}a[105];

double Dist(node p,node q)
{
	return sqrt( (p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y) );
}
int main()
{
    int N;
	double R;
	while(scanf("%d %lf",&N,&R)!=EOF)
	{
       for(int i=0;i<N;i++)
		   scanf("%lf %lf",&a[i].x,&a[i].y);
       double sum=0;
	   a[N]=a[0];
	   for(int i=0;i<N;i++)
         sum+=Dist(a[i],a[i+1]);
       sum+=2*pi*R;
	   printf("%.2f\n",sum);
	}
	return 0;
}


 

 

 

 

 

發佈了20 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章