POJ 3304 Segments | 线段相交
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 105
#define eps 1e-8
using namespace std;
double abs (double x)
{
return x>0?x:-x;
}
bool dcmp(double x,double y)
{
if (abs(x-y)<eps) return 1;
return 0;
}
struct point
{
double x,y;
point () {};
point (double _x,double _y) :
x(_x),y(_y) {};
/*
point operator - (const point &a) const
{
return point (x-a.x,y-a.y);
}
double operator * (const point &rhs) const
{
return x*rhs.y-rhs.x*y;
}
*/
bool operator < (const point &rhs) const
{
return x<rhs.x;
}
friend point operator + (const point &a,const point &b) {
return point(a.x+b.x,a.y+b.y);
}
friend point operator - (const point &a,const point &b) {
return point(a.x-b.x,a.y-b.y);
}
friend double operator * (const point &a,const point &b) {
return a.x*b.y-a.y*b.x;
}
bool operator == (const point &rhs) const
{
return dcmp(x,rhs.x) && dcmp(y,rhs.y);
}
};
struct line
{
point a,b;
}seg[N];
int T,n;
bool check (point l,point z)
{
if (l==z) return 0;
for (int i=1;i<=n;i++)
if(((l-seg[i].a)*(l-z)) *((l-seg[i].b)*(l-z)) > eps) return 0;
return 1;
}
void solve()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%lf%lf%lf%lf",&seg[i].a.x,&seg[i].a.y,&seg[i].b.x,&seg[i].b.y);
if (n<3)
{
puts("Yes!");
return ;
}
for (int i=1;i<=n;i++)
{
for (int j=i+1;j<=n;j++)
if ( check(seg[i].a,seg[j].b) ||
check(seg[i].b,seg[j].a) ||
check(seg[i].a,seg[j].a) ||
check(seg[i].b,seg[j].b))
{
puts("Yes!");
return ;
}
}
puts("No!");
}
int main()
{
scanf("%d",&T);
while (T--)
{
solve();
}
return 0;
}
POJ 3304 Segments | 线段相交的更多相关文章
- poj 3304 Segments 线段与直线相交
Segments Time Limit: 1000MS Memory Limit: 65536K Description Given n segments in the two dim ...
- C - Segments POJ - 3304 (判断线段相交)
题目链接:https://vjudge.net/contest/276358#problem/C 题目大意:给你n条线段,问你是否存在一条线段使得所有的线段在这条直线的投影至少具有一个交点? 具体思路 ...
- POJ 3304 segments 线段和直线相交
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14178 Accepted: 4521 Descrip ...
- POJ 3304 Segments(计算几何:直线与线段相交)
POJ 3304 Segments 大意:给你一些线段,找出一条直线可以穿过全部的线段,相交包含端点. 思路:遍历全部的端点,取两个点形成直线,推断直线是否与全部线段相交,假设存在这种直线,输出Yes ...
- POJ 3304 Segments 判断直线和线段相交
POJ 3304 Segments 题意:给定n(n<=100)条线段,问你是否存在这样的一条直线,使得所有线段投影下去后,至少都有一个交点. 思路:对于投影在所求直线上面的相交阴影,我们可以 ...
- POJ 3304 Segments(判断直线与线段是否相交)
题目传送门:POJ 3304 Segments Description Given n segments in the two dimensional space, write a program, ...
- POJ 3304 Segments 基础线段交判断
LINK 题意:询问是否存在直线,使得所有线段在其上的投影拥有公共点 思路:如果投影拥有公共区域,那么从投影的公共区域作垂线,显然能够与所有线段相交,那么题目转换为询问是否存在直线与所有线段相交.判断 ...
- POJ 3304 Segments (判断直线与线段相交)
题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, wh ...
- POJ 3304 Segments (直线和线段相交判断)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7739 Accepted: 2316 Descript ...
随机推荐
- Friendly Date Ranges-freecodecamp算法题目
Friendly Date Ranges 1.要求 把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 ...
- JSONArray.fromObject不执行且不报错问题的解决
今天在写javaweb工程的时候需要向前台传json格式的数据,用到了json-lib-2.4-jdk15.jar等一系列包,然而却出现如下状况: CityBean是一个javaBean,我们看到,控 ...
- 控制器方法重复命名导致nginx 504的问题
由于控制器方法重复命名重启swoole后运行代码导致 504 Gateway Time-out ,查看laravel日志和nginx日志才找原因所在,以后还是要多看错误日志.
- PHP 防止 E-mail 注入( PHP 过滤器)
PHP 防止 E-mail 注入 防止 e-mail 注入的最好方法是对输入进行验证. 下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序: <html> ...
- 裸机——I2C
网上搜了些资料,碍于智商和基础,看不懂, 只有将S5PV210 数据手册关于I2C的部分,翻译记录下,留到以后用. 1.OVERVIEW The S5PV210 RISC microprocessor ...
- 笔记-python-lib-lxml
笔记-python-lib-lxml 1. lxml简介 lxml是一个实现解析网页文件的库,python中自带有解析库,但没有lxml方便好用. The lxml XML toolkit ...
- 5-1 练习css 总结
1. 边框 border:3px dotted; border: 2px solid yellow; 背景颜色 background-color: red; 外攘 margin:20px 0 20px ...
- Android 判断屏幕方向一个大坑
正常的判断屏幕方向的代码: /** 获取屏幕是否是竖屏 * @return */ @SuppressLint("SwitchIntDef") public boolean isSc ...
- SetConsoleCtrlHandler
Excerpt: Registering a Control Handler Function This is an example of the SetConsoleCtrlHandler fu ...
- 如何在一个顶级域名下用两个二级域名访问vps下的两个项目网站--完美解决骗
本人是原址是http://www.webzhe.com/server/340 后经过本人的实践修改,增加截图,等具体的步骤,完美解决 如何在vps中设置二级域名开通子网站,这个问题涉及到两步:一首先要 ...