zoukankan      html  css  js  c++  java
  • Vijos 1007 绕钉子的长绳子

    背景

    平面上有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

    题解

    任意画出集中情况,就可以发现,答案是这些点组成的多边形的周长加上一个半径为R的圆的周长。
    代码如下:

    #include <cstdio>
    #include <cmath>
    #define pi acos(-1.0)
    int n;
    double r, x[110], y[110], res;
    int main()
    {
        scanf("%d%lf", &n, &r);
        for (int i = 0; i < n; i ++)
            scanf("%lf%lf", &x[i], &y[i]);
        res = 2 * pi * r;
        for (int i = 0; i < n; i ++)
            res += sqrt((x[i]-x[(i+n-1)%n])*(x[i]-x[(i+n-1)%n])+(y[i]-y[(i+n-1)%n])*(y[i]-y[(i+n-1)%n]));
        printf("%.2lf
    ", res);
        return 0;
    }
    
  • 相关阅读:
    ubuntu安装redis
    ubuntu安装mongodb
    IO-MYSQL的理解
    HTTP协议理解
    linux面试
    mysql引擎事物支持
    ubuntu安装scrapy方法
    mysql关系型和非关系型区别
    mysql引擎
    vue优势
  • 原文地址:https://www.cnblogs.com/xianyue/p/6951908.html
Copyright © 2011-2022 走看看