Vijos P1007 绕钉子的长绳子

绕钉子的长绳子

背景

平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。

现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。

描述

求出绳子的长度

格式

输入格式

第1行两个数:整数N(1<=N<=100)和实数R。

接下来N行按逆时针顺序给出N个钉子中心的坐标
坐标的绝对值不超过100。

输出格式

一个数,绳子的长度,精确到小数点后2位。

样例1

样例输入1

4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0

样例输出1

14.28

限制

各个测试点1s

提示

如果你用比较复杂的方法AC了,请想一想有没有更加简便的方法。

来源

Ural

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 #define maxn 110
 6 double x[maxn],y[maxn],R,ans;
 7 int n;
 8 int main(){
 9     scanf("%d%lf",&n,&R);
10     for(int i=1;i<=n;i++)
11       scanf("%lf%lf",&x[i],&y[i]);
12     for(int i=2;i<=n;i++){
13         ans+=sqrt((x[i]-x[i-1])*(x[i]-x[i-1])+
14             (y[i]-y[i-1])*(y[i]-y[i-1]));
15     }
16     ans+=sqrt((x[n]-x[1])*(x[n]-x[1])+
17             (y[n]-y[1])*(y[n]-y[1]));
18     ans+=R*2*3.14159;
19     printf("%.2lf",ans);
20     return 0;
21 }

 

posted @ 2017-03-09 20:14  浮华的终成空  阅读(160)  评论(0编辑  收藏  举报

Contact with me