| ||||||||||
| 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