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 |
怎么可能是TLE呢!!!!!怎么可能。。。才10^6!!!#include<cstdio> using namespace std; struct point { double x; double y; }; bool judge(point p1,point p2,point p3) { if((p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x)==0) return true; else return false; } point inter(point u1,point u2,point v1,point v2) { point ret=u1; double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x)); ret.x+=(u2.x-u1.x)*t; ret.y+=(u2.y-u1.y)*t; return ret; } main(){ int t,cont,flag,n,i,j,k; struct point a[220],ret; double x1,x2,y1,y2; scanf("%d",&t); while(t--){ flag=1; scanf("%d",&n); for(i=0;i<=2*n-1;i++){ scanf("%lf%lf",&a[i].x,&a[i].y); } for(i=0;i<=2*n-1 && flag;i++){ for(j=i+1;j<=2*n-1 && flag;j++){ cont=0; for(k=0;k<=2*n-1 && flag;k=k+2){ if(judge(a[i],a[j],a[k])&&judge(a[i],a[j],a[k+1])) cont++; else{ ret=inter(a[i],a[j],a[k],a[k+1]); if(a[k].x>a[k+1].x){ x1=a[k+1].x; x2=a[k].x; } else{ x1=a[k].x; x2=a[k+1].x; } if(a[k].y>a[k+1].y){ y1=a[k+1].y; y2=a[k].y; } else{ y1=a[k].y; y2=a[k+1].y; } if(ret.x<=x2 && ret.x>=x1 && ret.y<=y2 && ret.y>=y1) cont++; } } if(cont==n) flag=0; } } if(flag==0) printf("Yes!\n"); else printf("No!\n"); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator