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 ...
随机推荐
- 关于 export default 和 export
// 第一组 export default function crc32() { // 输出 // ... } import crc32 from 'crc32'; // 输入 // 第二组 expo ...
- Cluster - HA -keepalived
学习须知 VRRP:https://www.cnblogs.com/aftree/p/9376427.html 需求 集群中,对后端RealServer的状态做检测,实现自动化问题检测和问题自动处理机 ...
- python——“/”运算符和“//”运算符的区别
首先先看单斜杆的用法:举几个例子 >>> print(5/3),type(5/3)1.6666666666666667(None, <class 'float'>) &g ...
- Balance POJ - 1837
Description Gigel has a strange "balance" and he wants to poise it. Actually, the device i ...
- 笔记-redis安装
笔记-redis安装配置 1. redis安装配置 1.1. windows环境安装 win8已有redis 查看版本:redis-server –version 想更新到5.0.0, ...
- 16,docker入门
在学一门新知识的时候,超哥喜欢提问,why?what?how? wiki资料 什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一 ...
- JavaScript - 问题集 - 含function的json对象与json字符串之间相互转换
基本的转换为:JSON.parse与JSON.stringify. 但是json数据中含function,则转换后,function会丢失,如: var json={ test:'test', log ...
- 《Cracking the Coding Interview》——第3章:栈和队列——题目7
2014-03-19 03:20 题目:实现一个包含阿猫阿狗的先入先出队列,我要猫就给我一只来的最早的猫,要狗就给我一只来的最早的狗,随便要就给我一只来的最早的宠物.建议用链表实现. 解法:单链表可以 ...
- USACO刷题之路,开始了
几天前,重新开始刷题了. 重新刷题有几个原因: 1.曾经的OI经历,如今除了悟性高些.知识多些,大多已经遗忘.不希望真的让之前的OI水平就这么丢了. 2.越来越觉得,刷题真的是一件很开心的事情.大学中 ...
- apache的/etc/httpd/conf/httpd.conf和/usr/local/apache2/conf/httpd.conf区别
一.问题 centos系统用yum安装完apache后,重启后有时会失效,然后去网上找资料,发现有的说重启命令是这样的: /etc/init.d/httpd restart 而有的呢,说重启命令应该是 ...