听说这道题是个大大的坑题

结果wa了十多发,,,,还是没找到原因

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<algorithm>
  4. using namespace std;
  5. double eps=1e-8;
  6. int cmp(double x)
  7. {
  8. if(fabs(x)<eps)
  9. return 0;
  10. if(x<0)return -1;
  11. return 1;
  12. }
  13.  
  14. struct Point
  15. {
  16. double x,y;
  17. Point (){}
  18. Point (double _x,double _y)
  19. {
  20. x=_x,y=_y;
  21. }
  22. Point operator -(const Point &b)const
  23. {
  24. return Point (x-b.x,y-b.y);
  25. }
  26. double operator *(const Point &b)const
  27. {
  28. return x*b.x+y*b.y;
  29. }
  30. double operator ^(const Point &b)const
  31. {
  32. return x*b.y-y*b.x;
  33. }
  34. };
  35.  
  36. struct Line
  37. {
  38. Point s,e;
  39. Line (){}
  40. Line (Point _s,Point _e)
  41. {
  42. s=_s;
  43. e=_e;
  44. }
  45. };
  46.  
  47. double xmult(Point p0,Point p1,Point p2)
  48. {
  49. return cmp((p2-p1)^(p0-p1));
  50. }
  51. bool seg_seg(Line l1,Line l2)//相交return true
  52. {
  53. return xmult(l1.s,l2.s,l2.e)*xmult(l1.e,l2.s,l2.e)<=0&& xmult(l2.s,l1.s,l1.e)*xmult(l2.e,l1.s,l1.e)<=0;
  54. }
  55. Line line[5];
  56.  
  57. int main ()
  58. {
  59. int n;
  60. double x1,x2,x3,x4,y1,y2,y3,y4;
  61. scanf("%d",&n);
  62. while(n--)
  63. {
  64. scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
  65. if(x3>x4)swap(x3,x4);
  66. if(y3<y4)swap(y3,y4);
  67. line[0]=Line(Point(x1,y1),Point(x2,y2));
  68. if(x1>x3&&x1<x4&&x2<x4&&x2>x3&&y1>y4&&y1<y3&&y2>y4&&y2<y3)
  69. {
  70. printf("T\n");
  71. continue;
  72. }
  73. else
  74. {
  75. line[1]=Line(Point(x3,y4),Point(x3,y3));
  76. line[2]=Line(Point(x3,y4),Point(x4,y4));
  77. line[3]=Line(Point(x4,y3),Point(x4,y4));
  78. line[4]=Line(Point(x4,y3),Point(x3,y3));
  79. for(int i=1;i<=4;i++)
  80. {
  81. if(seg_seg(line[0],line[i]))
  82. {
  83. printf("T\n");//相交了
  84. break;
  85. }
  86. if(i==4)
  87. printf("F\n");//没相交
  88. }
  89. }
  90.  
  91. }
  92.  
  93. return 0;
  94. }

已经发现的 坑点:

1:相交的意思是:与这个矩形整体相交,即分为:(1)与四条边中的几条相交,(2)或者在矩形内部不与四条边相交;

2:给出的矩形的四条边不一定是左上边的和右下边的,需要进行比较。(太坑)

poj 1410 (没做出来,记得闲着没事看看这道题)的更多相关文章

  1. 关于一些没做出来的SBCF题

    这里是一些我SB没做出来的CF水题. 其实这些题思维量还不错,所以写在这里常来看看…… 不一定每题代码都会写. CF1143C Queen 其实只要注意到如果一个点开始能被删,那一直就能被删:一个点开 ...

  2. 线段和矩形相交 POJ 1410

    // 线段和矩形相交 POJ 1410 // #include <bits/stdc++.h> #include <iostream> #include <cstdio& ...

  3. 没做过编译器就是被人欺——从一道变态的i++题猜编译器的行为(表达式从左往右扫描,同一变量相互影响)

    首先不要被人蒙了,如果是这样,根本编译不过: int i=1; int b=i+++++i; printf("%d %d\n", b ,i); Mingw报错:error: lva ...

  4. 【腾讯敏捷转型No.5】需求没做完可以发布嘛

    很多人对于敏捷的第一直觉就是“快”,开发快,测试快,发布快,并不知道如何把这个“快”应用到敏捷实践中,下面我们来分析一下导致工作效率低的核心原因.没有使用敏捷之前,在大多数情况下,项目管理都需要开各种 ...

  5. 在vc6.0下编的对话框界面如果没做过其他处理,往往显的很生硬,怎么样才能使他有Windows XP的风格呢,其实也很简单,我们来看看下面两种方法。

    在vc6.0下编的对话框界面如果没做过其他处理,往往显的很生硬,怎么样才能使他有Windows XP的风格呢,其实也很简单,我们来看看下面两种方法.    方法一: 1.首先确认你在Windows   ...

  6. POJ 1410 Intersection (计算几何)

    题目链接:POJ 1410 Description You are to write a program that has to decide whether a given line segment ...

  7. poj 1410 线段相交判断

    http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

  8. [POJ 1410] Intersection(线段与矩形交)

    题目链接:http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Sub ...

  9. noi2018还没想好记

    前面说点什么.. 没想到吧 嘴上说着不写的彩笔博主最后还是写了这篇东西.. Day -inf 在雅礼集训,打了四场模拟赛.. 真正说打得好的.. 也就那么一场 身体很差 心态很差 状态很差 虽然有书读 ...

随机推荐

  1. LeetCode701 二叉搜索树中插入结点

    给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 保证原始二叉搜索树中不存在新值. 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜 ...

  2. (二)React Ant Design Pro + .Net5 WebApi:前端环境搭建

    首先,你需要先装一个Nodejs,这是基础哦.如果没有这方面知识的小伙伴可以在园子里搜索cnpm yarn等关键字,内容繁多,此不赘述,参考链接 一. 简介 1. Ant Design Pro v5 ...

  3. MyBatis 查询的时候属性名和字段名不一致的问题

    目录 问题 解决方案:resultMap 问题 当我们数据库中的字段和实体类中的字段不一致的时候,查询会出问题 数据库字段是 pwd id name pwd 1 张三 123456 2 李四 1234 ...

  4. linux硬盘分区和fdisk命令

    分区的几个概念 硬盘分区有三种,主分区.扩展分区.逻辑分区.一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个.且主分区+扩展分区总共不能超过4个.逻辑分区可以有若干个.在windows下 ...

  5. 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)

    Spring事务管理概述 文章目录 Spring事务管理概述 数据库事务 什么是Spring的事务管理? Spring对事务管理的支持 Spring事务管理的核心接口 Platform Transac ...

  6. iptables自动屏蔽访问网站最频繁的IP

    iptables自动屏蔽访问网站频繁的IP 屏蔽每分钟访问超过200的IP 方法1:根据访问日志(Nginx为例 #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) AB ...

  7. Git 沙盒模拟实战(远程篇)

    Git 沙盒模拟实战(远程篇) >---基础篇 远程仓库 远程仓库并不复杂, 在如今的云计算盛行的世界很容易把远程仓库想象成一个富有魔力的东西, 但实际上它们只是你的仓库在另个一台计算机上的拷贝 ...

  8. 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出

    18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...

  9. linux opt, usr文件夹说明

    linux下各文件夹介绍: https://www.pathname.com/fhs/pub/fhs-2.3.html /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为 ...

  10. 阿里云VOD(二)

    一.准备工作 1.设置不转码 测试之前设置默认"不转码",以节省开发成本 2.找到子账户的AccessKey ID 3.给子账户添加授权 AliyunVODFullAccess 4 ...