如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。
URAL/1020
来自"NOCOW"
< URAL
我最开始还以为要求凸包呢!结果发现是给现成的。好,仔细观察后你会惊喜地发现不论钉子在那哪(只要保证是凸包)绳子绕在钉子上的长度总是一个钉子的周长,现在就容易了。
program cao; const maxn=200; var x,y:array[0..maxn] of extended; ans,r:extended; i,j,k,l,n,m,p,q:longint; procedure init; begin read(n,r); for i:=1 to n do read(x[i],y[i]); x[n+1]:=x[1]; y[n+1]:=y[1]; end; procedure main; begin ans:=r*2*pi; for i:=1 to n do ans:=ans+sqrt(sqr(x[i+1]-x[i])+sqr(y[i+1]-y[i])); end; procedure print; begin writeln(ans:0:2); end; begin init; main; print; end.
#include<iostream> #include<stdio.h> #include<cmath> using namespace std; double const pi=acos(-1.0); int main() { int n=0,i=0; double sum=0,r=0,x0,y0,x1,y1,x,y; cin>>n>>r; cin>>x>>y;// 保存第一个点 x0=x1=x; y0=y1=y; sum=2*pi*r; for(i=1; i<n; i++) { cin>>x1>>y1; sum+=sqrt( (x1-x0)*(x1-x0)+ (y1-y0)*(y1-y0) ); x0=x1; y0=y1; } if(n!=1) sum+=sqrt( (x1-x)*(x1-x)+ (y1-y)*(y1-y) ); printf("%.2lf\n",sum); system("pause"); return 0; }