码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷 绕钉子的长绳子

时间:2017-01-19 12:47:19      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:stream   长度   绝对值   凸多边形   cstring   个数   精确   复杂   测试   

背景

平面上有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了,请想一想有没有更加简便的方法。

 

找规律 无论N是多少都是他两点间的距离加上一个圆 可以自己画画 。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const double Pi=acos(-1.0);
int i,j,N;
double R,x[101],y[101],ans;
int main()
{
    scanf("%d%lf",&N,&R);
    for(i=0;i<N;++i)
    {
        scanf("%lf%lf",&x[i],&y[i]);
        if(i>=1) ans+=sqrt((x[i]-x[i-1])*(x[i]-x[i-1])+(y[i]-y[i-1])*(y[i]-y[i-1]));
        if(i==N-1) ans+=sqrt((x[i]-x[0])*(x[i]-x[0])+(y[i]-y[0])*(y[i]-y[0]));
    }
    ans+=R*2*Pi;
    printf("%.2lf",ans);
}

 

洛谷 绕钉子的长绳子

标签:stream   长度   绝对值   凸多边形   cstring   个数   精确   复杂   测试   

原文地址:http://www.cnblogs.com/ruojisun/p/6305858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!