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 |
有硕士博士吗,同等学力的也进来帮帮我,为什么提交总是Accepted?#include <cstdlib> #include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> #include <cstring> using namespace std; int ans,n,id,id1,id2; double W,H,w,h; double x,arg,pi=acos(-1.0),k,b,in,eps=1e-6; struct brick { double x,y,w,h; int p; }; brick a[1000]; bool visit[1000],up; int main() { int i,j,s,p,q; double x0,y0,x1,y1,nx1,ny1; while(scanf("%lf%lf%lf%lf%d",&W,&H,&w,&h,&n)&&W+H+w+h+n) { for(i=0;i<n;i++) { scanf("%lf%lf%d",&a[i].x,&a[i].y,&a[i].p); a[i].w=w; a[i].h=h; } a[n].x=a[n].y=a[n].p=0; a[n].w=W; a[n].h=H; memset(visit,false,sizeof(visit)); scanf("%lf%lf",&x,&arg); arg=arg*pi/180.000; k=tan(arg); b=-k*x; x1=x; y1=0; id1=n; id2=0; up=true; ans=0; while(true) { in=(double)1000000000*(double)1000000000; for(i=0;i<=n;i++) { x0=a[i].x; y0=k*x0+b; if(y0<=a[i].y+a[i].h&&y0>=a[i].y) { if((up&&y0>y1+eps)||(!up&&y0<y1-eps)) { if(in>(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)) { in=(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1); id1=i; id2=3; nx1=x0; ny1=y0; } } } x0=a[i].x+a[i].w; y0=k*x0+b; if(y0<=a[i].y+a[i].h&&y0>=a[i].y) { if((up&&y0>y1+eps)||(!up&&y0<y1-eps)) { if(in>(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)) { in=(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1); id1=i; id2=1; nx1=x0; ny1=y0; } } } y0=a[i].y; x0=(y0-b)/k; if(x0<=a[i].x+a[i].w&&x0>=a[i].x) { if((up&&y0>y1+eps)||(!up&&y0<y1-eps)) { if(in>(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)) { in=(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1); id1=i; id2=0; nx1=x0; ny1=y0; } } } y0=a[i].y+a[i].h; x0=(y0-b)/k; if(x0<=a[i].x+a[i].w&&x0>=a[i].x) { if((up&&y0>y1+eps)||(!up&&y0<y1-eps)) { if(in>(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)) { in=(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1); id1=i; id2=2; nx1=x0; ny1=y0; } } } } if(id1==n&&id2==0) break; if(id1<n) ans+=a[id1].p; if(id2==0) { x0=x1; y0=2*a[id1].y-y1; if(nx1==x0) k=(double)1000000000*(double)100000000; else k=(ny1-y0)/(nx1-x0); b=y0-k*x0; up=!up; } else if(id2==2) { x0=x1; y0=2*(a[id1].y+a[id1].h)-y1; if(nx1==x0) k=(double)1000000000*(double)100000000; else k=(ny1-y0)/(nx1-x0); b=y0-k*x0; up=!up; } else if(id2==1) { y0=y1; x0=2*(a[id1].x+a[id1].w)-x1; if(nx1==x0) k=(double)1000000000*(double)100000000; else k=(ny1-y0)/(nx1-x0); b=y0-k*x0; } else if(id2==3) { y0=y1; x0=2*a[id1].x-x1; if(nx1==x0) k=(double)1000000000*(double)100000000; else k=(ny1-y0)/(nx1-x0); b=y0-k*x0; } x1=nx1; y1=ny1; if(id1<n) { for(j=id1;j<n;j++) a[j]=a[j+1]; n--; if(n==0) break; } } printf("%d\n",ans); } return EXIT_SUCCESS; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator