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;
    }
    
  • 相关阅读:
    不同数据类型的取值范围
    反正切函数求圆周率 atan
    HDOJ 1106
    HDOJ 1596
    HDOJ 1026 dfs路径保存
    qsort用法总结
    HDOJ 2088
    HDOJ 1878 欧拉回路 nyoj 42一笔画问题
    HDOJ 1863 prim算法 HDOJ 1879
    HDOj 1010 DFS优化
  • 原文地址:https://www.cnblogs.com/xianyue/p/6951908.html
Copyright © 2011-2022 走看看