Vijos P1007 绕钉子的长绳子

来源:互联网 发布:nginx rtmp hls直播 编辑:程序博客网 时间:2024/04/30 21:59

背景

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

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

描述

求出绳子的长度

格式

输入格式

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

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

输出格式

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

样例1

样例输入1[复制]

4 10.0 0.02.0 0.02.0 2.00.0 2.0

样例输出1[复制]

14.28

限制

各个测试点1s

提示

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

来源

Ural


#include <iostream> #include <cmath> #include <cstdio>using namespace std;int main(){int n;double r;cin>>n>>r;double a[100][2];double ans=0;for(int i=0;i<n;i++){cin>>a[i][0];cin>>a[i][1];}a[n][0]=a[0][0];a[n][1]=a[0][1];for(int i=1;i<=n;i++){ans+=hypot(fabs(a[i][0]-a[i-1][0]),fabs(a[i][1]-a[i-1][1]));}ans+=2.0*3.1415926*r;printf("%.2lf",ans); return 0;}

注意PI的取值,尽量取多位数才能ac
hypor(x,y)求斜边的函数 —— cmath库内

0 0
原创粉丝点击