Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
贴个简短的代码Source Code Problem: 3568 User: test_3568 Memory: 220K Time: 32MS Language: C++ Result: Accepted Source Code #include<iostream> #include<cmath> using namespace std; bool mark[2001],ok; double d,vd,r,w,vs,ans,di,wi; int fi,n,m; struct point { double x,y; }; point shark[2001]; bool dfs(int id) { bool res=true; if(shark[id].x<r) return false; ans=max(ans,(d-shark[id].x+vd*shark[id].y+r*sqrt(1+vd*vd))/vd/vs); mark[id]=true; for(int i=0;i<m;i++) { ok=sqrt((shark[id].x-shark[i].x)*(shark[id].x-shark[i].x)+(shark[id].y-shark[i].y)*(shark[id].y-shark[i].y))<2*r; if(fabs(-shark[i].x+vd*shark[i].y+shark[id].x-vd*shark[id].y-r*sqrt(1+vd*vd))/sqrt(1+vd*vd)<r) if(vd*shark[i].x+shark[i].y-vd*shark[id].x-shark[id].y>0) ok=true; if(ok&&!mark[i]) res&=dfs(i); } return res; } int main() { int i,j; scanf("%lf%lf%d%lf%lf%lf",&d,&vd,&n,&r,&w,&vs); vd/=vs; for(i=0;i<n;i++) { scanf("%lf%lf%d",&di,&wi,&fi); shark[m].x=d-di; shark[m++].y=(1+fi)*w-fi*wi; for(j=1;j<=60;j++) { shark[m].y=shark[m-1].y+2*w; shark[m++].x=shark[m-1].x; } } ans=d/vd/vs; for(i=0;i<m;i++) if(fabs(-shark[i].x+vd*shark[i].y)/sqrt(1+vd*vd)<r&&!mark[i]&&!dfs(i)) { puts("IMPOSSIBLE"); return 0; } printf("%f\n",ans); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator