joj 1131 Intersection
来源:互联网 发布:音频去噪音软件 编辑:程序博客网 时间:2024/06/07 19:20
一道wa了n+1次的题,都快绝望了,本想求助于网络上的各种代码,却发现一律模板,话说我现在还不知道模板为何物。。。。。。。终于在我的绞尽脑汁之下找到了错误,心情very舒畅,方法是看直线和矩形的各个边能不能相交(规范和非规范)以及他会不会在矩形里边:
#include<iostream>
#include<stdio.h>
using namespace std;
struct point{
int x;
int y;
};
int det(int a,int b,int c,int d)
{
return a*d-b*c;
}
int cross(point a,point b,point c)
{
int n=det(b.x-a.x,b.y-a.y,c.x-a.x,c.y-a.y);
return n;
}
int main()
{
int total_case,iii;
scanf("%d",&total_case);
for(iii=0;iii<total_case;iii++)
{
point start,end,l_t,l_b,r_t,r_b;
scanf("%d%d%d%d%d%d%d%d",&start.x,&start.y,&end.x,&end.y,&l_t.x,&l_t.y,&r_b.x,&r_b.y);
l_b.x=l_t.x;
l_b.y=r_b.y;
r_t.x=r_b.x;
r_t.y=l_t.y;
if(start.x==end.x) // 就是因为忘了这个才悲剧n次
{
if((start.y>l_t.y&&end.y>l_t.y)||(start.y<r_b.y&&end.y<r_b.y))
{
printf("F\n");
continue;
}
}
if(start.y==end.y)
{
if((start.x>r_b.x&&end.x>r_b.x)||(start.x<l_t.x&&end.x<l_t.x))
{
printf("F\n");
continue;
}
}
if(start.x>=l_t.x&&start.x<=r_b.x&&start.y<=l_t.y&&start.y>=r_b.y)
{
printf("T\n");
continue;
}
int d1=cross(start,end,l_t);
int d2=cross(start,end,r_t);
int d3=cross(start,end,l_b);
int d4=cross(start,end,r_b);
int p1=cross(l_t,r_t,start);
int p2=cross(l_t,r_t,end);
int p3=cross(l_t,l_b,start);
int p4=cross(l_t,l_b,end);
int p5=cross(l_b,r_b,start);
int p6=cross(l_b,r_b,end);
int p7=cross(r_b,r_t,start);
int p8=cross(r_b,r_t,end);
if(d1*d2<=0&&p1*p2<=0) //上
{
printf("T\n");
continue;
}
if(d3*d4<=0&&p5*p6<=0) //下
{
printf("T\n");
continue;
}
if(d1*d3<=0&&p3*p4<=0) //左
{
printf("T\n");
continue;
}
if(d4*d2<=0&&p7*p8<=0) //右
{
printf("T\n");
continue;
}
printf("F\n");
}
}
- joj 1131 Intersection
- joj 1131: Intersection (判断直线与矩形是否有交点)
- joj 1131: Intersection (判断直线与矩形是否有交点) .
- Intersection
- Intersection
- Intersection
- Intersection
- JOJ 2257
- joj 2319
- joj 2653
- JOJ 2687
- joj 2693
- joj 2443
- joj 1173
- joj 1003
- joj 1066
- joj 1182
- joj 1195
- Java练手题之七IO编程
- 鸽巢原理 应用
- Android动态加载ListView中的Item【安卓进化二十三】
- 更改VLC源码 实现使用libVLC录像功能
- ECC6安装
- joj 1131 Intersection
- 6、从头学Android之ContexMenu上下文菜单
- 数据库的深入连接
- 80-VP432-1_A_AMSS_7x27_Board_Support_Package.pdf
- idoc 和 bapi 和 rfc 之间的区别
- c++ 使用正则表达式分割字符串
- Lucene聚类分组统计功能(grouping)
- 什么时候DBC
- SAP所有模块用户出口(User Exits)