标签:stream 长度 绝对值 凸多边形 cstring 个数 精确 复杂 测试
平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。
现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。
求出绳子的长度
第1行两个数:整数N(1<=N<=100)和实数R。
接下来N行按逆时针顺序给出N个钉子中心的坐标
坐标的绝对值不超过100。
一个数,绳子的长度,精确到小数点后2位。
4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0
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