zoj 1648 Circuit Board
2024-09-08 13:53:20
题目:意思就是推断给定的几条线段是否有相交的。
方法:模版吧,有空在来细细学习。
代码:
#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;
}
最新文章
- Csharp--Read Csv file to DataTable
- Windows内核遍历驱动模块源码分析
- 5-06使用Sql 语句为表添加约束
- Codeforces 567C Geometric Progression(思路)
- Redis Cluster 3.0搭建与使用
- 服务管理,Dll查看
- python中文字符串前加u
- day5_python学习笔记_chapter7_字典
- 【JAVA】hashcode() &; equals()
- 注入理解之APC注入
- 2. 引入springmvc
- webpack中跨域请求proxy代理(vue与react脚手架不同设置方法)
- VMware虚拟机安装Linux后忘记root密码怎么办(三)
- 使用 Navicate 连接 Oracle9i 数据库
- c++对象模型-对象模型
- VS2015 C#调用C++ 托管代码无法调试问题排查
- IntelliJ IDEA的安装和使用教程
- Keras 2.0版本运行
- Visual Studio Code 使用指南
- [翻译] AnchoredFloatView
热门文章
- 自定义View(8)关于measure->;onMeasur->;setMeasuredDimension及getDefaultSize,resolveSizeAndState
- Laravel (5.5.33) 加载过程---make方法(四)
- tab切换案例
- ImageMagick的下载和配置
- linu下nginx的安装
- 【Redis】一、Redis简介及五种数据类型
- 第四节:Web爬虫之pyquery解析库
- Spider-Python实战之通过Python爬虫爬取图片制作Win7跑车主题
- 6.4.1 标准库 os、os.path 与 shutil 简介
- Java基础学习总结(42)——Log4j 2使用教程