POJ 3304 Segments 枚举线段端点+判断相交

POJ 3304 Segments [枚举+叉乘判断线段相交]【计算几何】 题目链接 http://poj.org/problem?id=3304Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11920 Accepted: 3757 DescriptionGiven n segments in the two dimensional space, write a prog 阅读详情

题目描述:http://poj.org/problem?id=3304

解题思路:

所有线段在直线上的投影有公共区域,那么这条直线存在一条法线通过所有的线段。如果存在这么一条直线,那么这条直线必定至少通过所有端点中的两个。因为我们总可以移动这条直线使之被线段的端点卡住。所以只需要枚举端点和判断直线与线段相交就行了。


#include "stdio.h"
#include "math.h"
#define MAXN 107
#define eps 1e-8

struct point {
	double x, y;
} p[MAXN*4];

struct line {
	struct point a, b;
} l[MAXN];

int n ,np;

bool eql(int i, int j) {
	if (fabs(p[i].x-p[j].x)<eps && fabs(p[i].y-p[j].y)<eps) 
		return true;
	else 
		return false;
}

double xProduct(struct point a, struct point b, struct point c) {
	double x1 = b.x-a.x, y1 = b.y-a.y;
	double x2 = c.x-a.x, y2 = c.y-a.y;
	return (x1*y2 - x2*y1);
}

bool intersect(int x, int y) {
	int i;
	for (i=1; i<=n; i++) {
		if (xProduct(p[x], p[y], l[i].a) * xProduct(p[x], p[y], l[i].b) > eps) {
			return false;
		} 
	}
	return true;
}

void init() {
	double ax, ay, bx, by;
	int i;
	scanf("%d", &n);

	np = 0;
	for (i=1; i<=n; i++) {
		scanf("%lf %lf %lf %lf", &ax, &ay, &bx, &by);
		l[i].a.x = ax; l[i].a.y = ay;
		l[i].b.x = bx; l[i].b.y = by;
		++np;
		p[np].x = ax; p[np].y = ay;
		++np;
		p[np].x = bx; p[np].y = by;
	}
}

int main() {
	int i, t, j;
	bool exist;
	scanf("%d", &t);
	while (t--) {
		exist = false;
		init();
		for (i=1; i<=np; i++) 
		for (j=i+1;j<=np; j++) {
			if (!eql(i, j) && intersect(i, j)) {
				exist = true;
				break;
			}
		}
		if (exist) {
			printf("Yes!\n");
		} else {
			printf("No!\n");
		}
	}
	return 0;
}

AI应用架构师:引领半导体良率AI预测的变革浪潮 在半导体行业这个技术密集、资本密集且竞争异常激烈的领域,良率是决定企业盈利能力的关键指标。每提升1%的良率可能意味着数亿美元的利润增长。然而,随着制程节点不断缩小至3nm、2nm甚至更先进水平,传统的良率管理方法已难以应对日益复杂的制造流程和指数级增长的数据量。本文将深入探讨AI应用架构师如何成为这场变革的核心驱动力,通过设计和实施先进的AI预测系统,将半导体良率预测从传统的"事后分析"转变为"事前预测"和"实时优化"。 阅读详情

相关推荐

从萤石云到GB28181:海康4G摄像机接入第三方平台的曲折之路

本文深入探讨了海康4G摄像机接入第三方平台时遇到的协议冲突问题,特别是GB28181与萤石云服务的互斥性。通过技术分析揭示了4G模块的定向流量限制和协议栈资源竞争等核心问题,并提供了有线接入测试和萤石云API二次开发等解决方案。最后总结了设备选型的关键参数和协议兼容性检查清单,为安防监控系统集成提供实用指导。

mango的博客 991

基于体素化的游戏寻路导航网格自动生成算法

多边形分割成若干凸多边形(NavMesh的初步形成)在Unity中实现体素化当时我正开始做毕设,因为从小对游戏感兴趣,所以找老师开了这么一个题目,不过后来因为事情繁忙(偷懒太久),文章一直没有更新,到如今我都从清纯校招生变成工作一年半的老油条了。最近整理了一下当时的资料,开源了项目代码,并且将毕设论文中的“干货”部分,发表出来。一方面希望能够给对这个方面感兴趣的同学一点学习的参考,另一方面,如果我的内容存在错误,也希望能够被指出,我也能在不断改正的过程中成长。

F_CILF_CIL的博客 2800

[0352]基于JAVA的停车场收费智慧管理系统的设计与实现

其次,从经营管理层面考虑,本系统涵盖了丰富的月卡管理和财务结算功能,如月卡用户管理、缴费、注销、挂失、解挂、补办等全流程服务,以及临保和月保的结算汇总与欠费查询等功能,这不仅有助于规范停车场的日常运营管理,更能有效提高财务管理效率,降低运营成本,实现精细化、数字化的财务管控。综上所述,本课题计划研发的基于Java的停车场收费智慧管理系统将在现有研究成果的基础上,重点优化月卡用户全生命周期管理和财务统计分析功能,以满足现代停车场高效、精准、安全的管理需求,紧跟行业发展趋势,为推动智慧城市的建设贡献一份力量。

muyu2980的专栏 589

POJ 3304 Segments

POJ 3304 Segments Description Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all projected seg...

旺崽的博客 2780

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 862

蓝牙功耗优化实战:连接蓝牙耳机时高耗电问题的深度排查与解决

连接任意一款蓝牙耳机, 进行插入实网SIM卡, 同时连接蓝牙耳机后, 进入IDLE模式, 测试时间为10分钟的测试结果, 平均电流毫安在8左右. 测试结果1: 平均电流 8.84mA 测试结果2: 平均电流 7.39mA 厘清问题: 由于出现上两幅图中 绿色线圈中的 20mA 左右高耗电时段, 从而将整体的平均电流抬高. 于是在记录IDLE下电流出现绿色线圈中的 20mA 左右高耗电时段, 同时录制UART1 Catcher log. Filter: MOD_BT/MOD_ATC.

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1001

Segments POJ - 3304 判断直线与线段相交

题目链接:https://vjudge.net/problem/POJ-3304 转自:https://blog.youkuaiyun.com/sdsy191553/article/details/83067586 题意:给多条线段,问能否找到一条直线,将所有线段投影到上面后有至少一个公共交点。 思路:假设存在直线,对直线做垂线,当垂线在投影的公共区域时,它会经过所有线段。 问题变成了找这样的一条可以经过所有...

A 405

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2235

POJ 3304 Segments [判断线段和直线相交]

题目链接:http://poj.org/problem?id=3304 题目的意思比较有

921

若依开源系统多数据源整合clickhouse数据库详细步骤

若依开源系统多数据源整合clickhouse数据库详细步骤

java之书-资源 897

YOLO26全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1032

POJ 3304 Segments (判断直线与线段相交)

题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all pro...

G19850917的博客 232

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj 3304 Segments

poj 3304 Segments (计算几何水题) 链接:http://poj.org/problem?id=3304 题意:找出一条直线,使得给出的所有线段在这个直线上的投影有交集。 思路:找出一条直线,使得其与所给的线段有交点。枚举每一个线段的端点,假设直线经过某两点,判断直线是否与其它线段相交。枚举这些点的位置即可。主意其中的输出大小写,我wa了一个晚上就是输出的大小写写错...

dengyun9338的博客 186

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

线段是否相交 && 线段与直线是否相交 [Segments Poj3304]

题目传送门 计算几何 这题大概的意思就是,给你一系列的线段,问存不存在那么一条直线,当所有的线段向这条直线上投影的时候,投影能够有至少一个交点。 脑洞:投影的事情,我们可以用一条直线来表示方向,表示所有的线段沿着这个直线的某个方向进行投影(投影直线将与这条直线相垂直)。 那么至少有一个交点就变成了,能不能找到一条直线,将所有的线段串在一起? 接下里的任务是找这样的一条直线,这样的直线我们应该从...

rain_island的博客 836

poj 3304 Segments(判断线段和直线相交)

题目链接:点击打开链接

Baoli1008的专栏 617

判断直线与线段相交 POJ 3304 Segments

题意:在二维平面中,给定一些线段,然后判断在某直线上的投影是否有公共点。 转化,既然是投影,那么就是求是否存在一条直线L和所有的线段都相交。 证明: 下面给出具体的分析:先考虑一个特殊的情况,即n=1的时候,如下图,线段AB在直线L上的投影为线段A'B',则过任意介于A'B'之间的点C'做直线L的垂线必交线段AB与一点C;反之,过线段AB之间任意一点C做直线L的垂线,垂足必定落...

dizhuo0219的博客 311

POJ - 3304 Segments【计算几何】【线段相交】

Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all projected segments have at least one point ...

slass-mot-odet 518

poj 3304 Segments (跟所有线段相交的直线)

Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13902   Accepted: 4449 Description Given n segments in the two dimensional space, write a program,

K键盘里的青春K 1037

POJ - 3304 -- Segments【直线与线段相交 】

Segments Description Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all projected segments have at least one point in common. Input Input begins with

qq_45249273的博客 569

poj 3304Segments(直线与线段的相交关系)

题目链接: http://poj.org/problem?id=3304 题目大意: 给你一些线段,问你能不能找出一条直线,使得这些线段投影到这条直线上至少有一个公共交点。 思路: 这题转化一下其实就是能不能有一条直线穿过所有的线段。由于N比较小(n 代码: #include #include #include #include #define PI acos(-1.0) #de

hahahaha 530

POJ - 3304 Segments(直线与线段相交)

链接:https://cn.vjudge.net/problem/POJ-3304 题意:n条线段,问是否存在一条直线。n条线段在该直线的投影至少有一个公共点。 思路:如果存在这样的直线,那么过某一公共点作该直线的垂线,这条垂线一定与n条线段都相交。所以,问题转化为是否有一条直线与这n条线段相交。显然,如果存在这样的直线,那么肯定可以经过两线段的端点画出一条这样的线。枚举这两个端点判断即可。判...

birdmanqin的博客 317

poj 3304 Segments 【判断是否存在一条直线与所有线段相交】

Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11471   Accepted: 3612 Description Given n segments in the two dimensional space, write a program,

世界很大 606

poj 3304 Segments 线段与直线相交

题目链接 题意 给定\(n\)条线段,问是否存在一条直线,使得这\(n\)条线段在这条直线上的投影至少有一个交点。 思路 即问是否存在一条直线与这\(n\)条线段都有公共点。 充分性:若存在这样一条直线,则垂直于该直线的任一条直线即可作为题中的投影直线。 因此,可以枚举两个端点得到一条直线,判断其他所有线段是否与该直线有公共点。 注意点 枚举的两个端点可以是同一条直线的两个端点。 注意...

ahu12345678的博客 142

Poj-3304 Segments(计算几何—— 判断线段相交)

this -> (m≧w≦m) yada 终于写完了 思路 ↓ 投影直线上有公共点的话就是说这条直线存在一个垂线经过所有线段 就是与所有线段均相交 只要枚举这些线段端点所确定的直线 是否存在一条与所有线段均相交即可 判断线段相交用的是叉乘 首先用两点p1,p2确定了一条直线 在用p1,p2分别与计算线段两个端点计算叉乘即可 叉乘之积>0就说明线段两端点在直线的同侧 也就是直线不经过此...

La Vie Boheme 283

Segments POJ3304 直线线段相交

题目链接 解法:求是否存在一条直线,穿过所有线段, 若存在,那么一定可以通过旋转或平移,使得该直线穿过两线段端点 那么暴力枚举任意两个端点,构造直线,检验是否穿过所有线段(叉乘判断) 即可 模板博客 #include <map> #include <set> #include <cmath> #include <queue> ...

郭源潮 194
上一篇: POJ 1269 Intersecting Lines 判断直线相交
下一篇: POJ 1556 The Doors 判断线段相交+最短路
f_cpp
博客等级 码龄12年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值