poj 2365 Rope
题目链接:http://poj.org/problem?id=2365
题意:给出钉子数量和半径,并顺时针给出每个钉子的位置,求绕过钉子的绳子的长度。
分析:绕过钉子的长度正好是一个钉子的周长,然后加上该多边形的周长即为答案。(虽然我是看案例猜出来的)(输出时要用%.2f,因此wa了N发。)
http://book.51cto.com/art/200901/106880.htm
代码:
#include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<stack> #include<cstdlib> #include<iomanip> #include<string> #include<vector> #include<map> #include<string> #include<iostream> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f typedef long long ll; #define Max(a,b) (a>b)?a:b #define lowbit(x) x&(-x) int main() { int n; double len=0,r,x[105],y[105]; cin>>n>>r; for(int i=0;i<n;i++) { cin>>x[i]>>y[i]; if(i>0) { len+=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) len+=sqrt((x[i]-x[0])*(x[i]-x[0])+(y[i]-y[0])*(y[i]-y[0])); } len+=2*r*acos(-1.0); printf("%.2f\n",(float)len); //cout<<setprecision(4)<<len<<endl; }