博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1410 Intersection(计算几何)
阅读量:6075 次
发布时间:2019-06-20

本文共 1732 字,大约阅读时间需要 5 分钟。

题目链接:

推断线段与矩形的关系。与矩形相交打印T,否则打印F。

坑题,精度。

。。

思路就是,先推断 线段是否在矩形里面,再推断线段和两条对角线的关系,利用叉积模板就可以

測试数据有个坑,就是 左上角的坐标并不一定比右下角的小。

。。这根本不符合题意嘛

#include 
#include
#include
#include
#include
#include
#define init(a) memset(a,0,sizeof(a))#define PI acos(-1,0)using namespace std;const int maxn = 110;const int maxm = 10010;#define lson left, m, id<<1#define rson m+1, right, id<<1|1#define min(a,b) (a>b)?b:a#define max(a,b) (a>b)?a:bvoid swap(int a,int b) {int t = a;a = b; b = t;}struct node{ int x1,y1,x2,y2;};node g,h;int judge(node p1,node p2){ double h1,h2; h1 = p2.x1*(p1.y2-p1.y1) + p1.x2*p1.y1 - p1.x1 * p1.y2 - p2.y1*(p1.x2 - p1.x1); h2 = p2.x2*(p1.y2-p1.y1) + p1.x2*p1.y1 - p1.x1*p1.y2 - p2.y2*(p1.x2 - p1.x1); if(h1*h2<=0) return 1; else return 0;}bool OK(node g,node h)//推断是否在矩形里面{ if(g.x1>=h.x1 &&g.x1<=h.x2 && g.x2>=h.x1&&g.x2<=h.x2 && g.y2>=h.y1&&g.y2<=h.y2 &&g.y1>=h.y1&&g.y1<=h.y2) { return 1; } return 0;}int main(){ int n; scanf("%d",&n); while(n--) { scanf("%d%d",&g.x1,&g.y1); scanf("%d%d",&g.x2,&g.y2); scanf("%d%d",&h.x1,&h.y1); scanf("%d%d",&h.x2,&h.y2); // printf("%d %d %d %d\n",h.x1,h.y1,h.x2,h.y2); if(h.x1>h.x2) swap(h.x1,h.x2); if(h.y1>h.y2) swap(h.y1,h.y2); //printf("%d %d %d %d\n",h.x1,h.y1,h.x2,h.y2); if(OK(g,h)) { puts("T"); continue; } if(judge(g,h)==1 && judge(h,g)==1 )//推断主对角线 { puts("T"); continue; } int flag = 0; // h.y1 = 12; h.y2 = 20; //swap(h.y1,h.y2); int t = h.y1; h.y1 = h.y2; h.y2 = t; // printf("%d %d %d %d\n",h.x1,h.y1,h.x2,h.y2); if(judge(g,h) && judge(h,g))//还有一条对角线 { flag=1; } (flag==1)?

puts("T"):puts("F"); } // printf("%d %d %d %d\n",h.x1,h.y1,h.x2,h.y2); return 0; }

转载地址:http://imxgx.baihongyu.com/

你可能感兴趣的文章
程序员45个好习惯
查看>>
关于保留页面状态的一些总结
查看>>
3 ways of including JavaScript in HTML
查看>>
js的Prototype属性 解释及常用方法
查看>>
EntityFramework 启用迁移 Enable-Migrations 报异常 "No context type was found in the assembly"
查看>>
SCC模板
查看>>
专题二经典问题解析_13
查看>>
和小猪一起搞微信公众号开发—创建自定义菜单
查看>>
C# 检测网络链接
查看>>
WPF 让Enter键按下时默认为某按钮(Button)事件
查看>>
Nginx下配置codeigniter框架
查看>>
git学习笔记(1)
查看>>
面试题3
查看>>
lucene全文检索技术
查看>>
java某课程安排
查看>>
Algs4-2.2.16自然的归并排序
查看>>
链表的基本操作(Basic Operations on a Linked List)
查看>>
Codeforces Round #195 (Div. 2) 解题报告
查看>>
除了 UCAN 发布的鹿班和普惠体,这些设计工具也来自阿里
查看>>
第一个JavaScript代码
查看>>