题目:意思就是推断给定的几条线段是否有相交的。

方法:模版吧,有空在来细细学习。

代码:

#include <iostream>
#include <cstdio>
using namespace std;
struct Point
{
double x,y;
};
struct LineSeg
{
Point a,b;
};
double Cross(Point a, Point b, Point c )
{
return (c.x - a.x)*(b.y - a.y) - (b.x - a.x)*(c.y - a.y);
}
int Yu(LineSeg u,LineSeg v)
{
return( (max(u.a.x,u.b.x)>=min(v.a.x,v.b.x))&&
(max(v.a.x,v.b.x)>=min(u.a.x,u.b.x))&&
(max(u.a.y,u.b.y)>=min(v.a.y,v.b.y))&&
(max(v.a.y,v.b.y)>=min(u.a.y,u.b.y))&&
(Cross(v.a,u.b,u.a)*Cross(u.b,v.b,u.a)>=0)&&
(Cross(u.a,v.b,v.a)*Cross(v.b,u.b,v.a)>=0));
} int main()
{
int n;
int flag=0;
LineSeg l[2002];
while(cin>>n)
{
flag=0;
for(int i=0;i<n;i++)
{
scanf("%lf%lf%lf%lf",&l[i].a.x,&l[i].a.y,&l[i].b.x,&l[i].b.y);
if(!flag)
for(int j=0;j<i;j++)
if(Yu(l[j],l[i]))
{
flag=1;
break;
}
}
if(!flag) cout<<"ok!"<<endl;
else cout<<"burned!"<<endl;
}
return 0;
}

最新文章

  1. Csharp--Read Csv file to DataTable
  2. Windows内核遍历驱动模块源码分析
  3. 5-06使用Sql 语句为表添加约束
  4. Codeforces 567C Geometric Progression(思路)
  5. Redis Cluster 3.0搭建与使用
  6. 服务管理,Dll查看
  7. python中文字符串前加u
  8. day5_python学习笔记_chapter7_字典
  9. 【JAVA】hashcode() &amp; equals()
  10. 注入理解之APC注入
  11. 2. 引入springmvc
  12. webpack中跨域请求proxy代理(vue与react脚手架不同设置方法)
  13. VMware虚拟机安装Linux后忘记root密码怎么办(三)
  14. 使用 Navicate 连接 Oracle9i 数据库
  15. c++对象模型-对象模型
  16. VS2015 C#调用C++ 托管代码无法调试问题排查
  17. IntelliJ IDEA的安装和使用教程
  18. Keras 2.0版本运行
  19. Visual Studio Code 使用指南
  20. [翻译] AnchoredFloatView

热门文章

  1. 自定义View(8)关于measure-&gt;onMeasur-&gt;setMeasuredDimension及getDefaultSize,resolveSizeAndState
  2. Laravel (5.5.33) 加载过程---make方法(四)
  3. tab切换案例
  4. ImageMagick的下载和配置
  5. linu下nginx的安装
  6. 【Redis】一、Redis简介及五种数据类型
  7. 第四节:Web爬虫之pyquery解析库
  8. Spider-Python实战之通过Python爬虫爬取图片制作Win7跑车主题
  9. 6.4.1 标准库 os、os.path 与 shutil 简介
  10. Java基础学习总结(42)——Log4j 2使用教程