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 |
奇技yin巧#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; const double inf=1e15; struct P { double x,y; P(){} P(double a,double b){x=a;y=b;} double D(){return x*x+y*y;} void Init(){scanf("%lf%lf",&x,&y);} }POM,Hea,tmp[100],Mat[100][100]; struct Line{P p1,p2;}E,A[100][100]; int n,siz[100],num[100]; P operator-(P p1,P p2){return P(p1.x-p2.x,p1.y-p2.y);} P operator+(P p1,P p2){return P(p1.x+p2.x,p1.y+p2.y);} double operator/(P p1,P p2){return p1.x*p2.x+p1.y*p2.y;} double operator*(P p1,P p2){return p1.x*p2.y-p2.x*p1.y;} P Cross(Line l1,Line l2) { double k1,k2,t;P p1; k1=(l2.p2-l1.p1)*(l1.p2-l1.p1); k2=(l1.p2-l1.p1)*(l2.p1-l1.p1); if((k1+k2)==0)return P(inf,inf); t=k2/(k1+k2); p1=P(l2.p1.x+t*(l2.p2.x-l2.p1.x),l2.p1.y+t*(l2.p2.y-l2.p1.y)); if((p1.x<l2.p1.x&&p1.x<l2.p2.x)||(p1.x>l2.p1.x&&p1.x>l2.p2.x))p1=P(inf,inf); if((p1.y<l2.p1.y&&p1.y<l2.p2.y)||(p1.y>l2.p1.y&&p1.y>l2.p2.y))p1=P(inf,inf); if((p1-POM)/Hea<0)p1=P(inf,inf); return p1; } double Dis(P p1,P p2){return (p1-p2).D();} void Judge(int x) { int i;siz[x]=0; for(i=1;i<=num[x];i++) { P p1=Cross(E,A[x][i]); if(p1.x==inf&&p1.y==inf)continue; Mat[x][siz[x]=1]=p1;break; } } void Solve() { int i,j,x,y; POM.Init();Hea.Init(); memset(siz,0,sizeof(siz));memset(num,0,sizeof(num)); E.p1=POM;E.p2=POM+Hea; for(i=1;i<=n;i++) { scanf("%d",&num[i]); for(j=1;j<=num[i];j++)tmp[j].Init(); tmp[num[i]+1]=tmp[1]; for(j=1;j<=num[i];j++)A[i][j].p1=tmp[j],A[i][j].p2=tmp[j+1]; } for(i=1;i<=n;i++)Judge(i); if(!siz[1]){printf("MISS\n");return;} double dis=Dis(POM,Mat[1][1]); for(i=2;i<=n;i++) if(siz[i]&&Dis(POM,Mat[i][1])<dis){printf("MISS\n");return;} printf("HIT\n"); } int main() { while(scanf("%d",&n)) if(!n)break; else Solve(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator