POJ 3304 Segments (判断直线和线段是否相交)

Simulink实战:火电机组一次调频与AGC协同控制建模与仿真解析 本文详细解析了如何使用Simulink进行火电机组一次调频与AGC协调控制的建模与仿真。通过系统架构设计、参数设置和模块实现,阐述了如何实现两者的协同控制,确保电网频率稳定。文章提供了实用的建模技巧、参数整定经验和性能评估方法,为电力系统仿真工程师提供了有价值的实践指导。 阅读详情

http://poj.org/problem?id=3304


思路:若所有线段在直线l上的投影有公共点p,那我们可以形象地说,(由投影的定义)必有一束细光穿过所有线段,投到直线l上,且在之上形成了一个光点p。

那么,是否有这么一束光呢?如何求呢?

方法:枚举两两线段的各一个端点,连一条直线,再判断剩下的线段是否都和这条直线有交点。

证明:为什么只需每次枚举两个端点就行了呢?首先假设这条直线不过任何端点,则我们可以左右平移这条直线,直到“脱离”了某个线段,此时与某个端点a相交;然后再将直线绕点a旋转,直到又“脱离”了一条线段,此时直线与另一端点相交,这就是我们需要的直线。证毕。


陷阱:可能有两条线段有一个端点重合,请跳过这种情况。


完整代码:

/*16ms,352KB*/

#include<cstdio>
#include<cmath>
const int mx = 105;
const double eps = 1e-8;

struct point
{
	double x, y;
	//point(double x = 0, double y = 0): x(x), y(y) {}
} p[2 * mx];

///计算p1p2 x p1p
double cross_product(point p1, point p2, point p)
{
	return (p2.x - p1.x) * (p.y - p1.y) - (p2.y - p1.y) * (p.x - p1.x);
}

bool judge(int n)
{
	int i, j, k;
	for (i = 0; i < n; ++i)
	{
		for (j = 0; j < n; ++j)
		{
			if (fabs(p[i].x - p[j].x) < eps && fabs(p[i].y - p[j].y) < eps) continue; ///两点重合
			for (k = 0; k < n; k += 2)
				if ( cross_product(p[i], p[j], p[k]) * cross_product(p[i], p[j], p[k + 1]) > 0 ) break;
                ///直线pi-pj与线段p1k-p2k不相交
			if (k == n) return true;
		}
	}
	return false;
}

int main()
{
	int t, n, i, j;
	scanf("%d", &t);
	while (t--)
	{
		scanf("%d", &n);
		n <<= 1;
		for (i = 0; i < n; ++i) scanf("%lf%lf", &p[i].x, &p[i].y);
		if (n <= 4) puts("Yes!");
		else puts(judge(n) ? "Yes!" : "No!");
	}
	return 0;
}

openEuler 快速入门 openEuler 是一个专注于企业领域的 Linux 发行版,广泛应用于服务器、云计算和边缘计算场景。最初由华为开发,现在由 Open Atom Foundation 进行开发和管理。Open Atom Foundation 是中国第一个开源软件基金会,得到了华为、阿里巴巴、腾讯、百度等知名企业的支持,并且中国信息通信部也是该基金会的一部分。可以将 openEuler 看作是 Red Hat 或 SUSE Linux 的等价物,但它与 SUSE Linux 更为相似。 阅读详情

相关推荐

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 736

直线射线线段的相交判断

本文主要介绍计算机图形学中线型对象的一些几何关系判断,包括直线、射线和线段。

Frank的专栏 2万+

【ZZULIOJ】郑州轻工业大学oj题解整合

写在前面 关于ZZULIOJ题解 学习编程,想要巩固无非就是刷题或者做项目,然后因为我大一开始是刷郑轻的题目,就想着自己整合一下自己写的题目。既是复习也是笔记吧。 题解(内有题目描述) 1000 整数a+b 1001 植树问题 1002 简单多项式求值 1003 两个整数的四则运算 1004 三位数的数位分离 1005 整数幂 1006 求等差数列的和 1007 鸡兔同笼 1008 美元和人民币 1009 求平均分 1010 求圆的周长和面积 1011 圆柱体表面积 1012 求绝对值 1013 求两点间

蒟蒻乱写的博客 29万+

两直线相交的判断方法

<br />下面的方法是标准算法<br />判断两线段是否相交:<br />  我们分两步确定两条线段是否相交:<br /> (1)快速排斥试验<br />   设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。<br /> (2)跨立试验     如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的两侧,即( P1 - Q1

每天进步一点点,踏踏实实向着理想迈进 4615

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3357

CocosCreator3.8实战指南:动态字体与位图字体性能优化技巧

本文深入解析CocosCreator3.8中系统字体、动态字体(TTF)与位图字体(FNT)的核心差异与性能表现。针对动态字体运行时解析开销大、内存占用高的痛点,提供了字体子集化、共享资源等优化技巧;同时详细介绍了位图字体制作流程及其在渲染速度、内存可控性上的绝对优势,并给出跨平台场景下的字体选型与优化策略,帮助开发者有效提升游戏性能。

weixin_29006701的博客 563

POJ 3304 Segments (叉积的运用---判断线段相交+枚举)

题目链接:http://poj.org/problem?id=3304 题意:给你n条线段,然后问是否存在一条直线,让所有线段在这条直线上的投影至少有一个公共点。 题解:我读题读了10年才读懂QAQ (太菜了)。这道题实际问的是是否存在一条直线与所有线段有交点。 如何从题意,转化到这里呢? 首先投影一定是和直线是垂直的,若所有直线至少有一个公共点,那么过这个公共点作垂线,一定和所有线段有交...

PK__PK的博客 311

02.1 知识图谱工具 Protege的下载安装与使用

Protege的下载安装与使用 本文是王昊奋老师《知识图谱》系列笔记第2.1篇。 文章目录Protege的下载安装与使用0 相关介绍0.0 Protege相关介绍0.1 Protégé的特点0.2 Protégé的用途1 Protege的下载1.1 准备工作:安装配置JAVA环境1.2 官网下载2 Protege的安装2.1 直接解压缩2.2 双击运行3 Protege的使用实例-创建类...

和而不流 7万+

poj 3304 Segments 线段与直线的关系

给出n条线段(n<=100),问是否存在一条直线,使得所有线段在这条直线上的投影有至少一个公共交点。

便纵有千种风情 1273

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2880

uniapp(全端兼容) - 超详细接入百度统计功能,给uniapp全平台各端项目引入添加百度统计的插件统计流量详细的步骤教程(提供最新的百度统计源代码,详细的示例代码复制粘贴即可快速搞定!)

uniapp h5 app 使用加入接入百度统计,uniapp百度统计,uniapp详细引入百度统计的教程,uniapp接入百度统计,uniapp如何实现加入百度的统计代码,uniapp怎么植入百度统计详细教程,uniapp如何对接百度统计,uniapp百度统计不生效怎么办,uniapp使用百度统计不生效常见问题,uniapp引入百度统计后没有生效,uniapp h5网页接入百度统计代码后没有统计无效,uniapp最新接入使用百度统计功能,uniapp增加百度统计代码,uniapp app如何接入百度统计,

✅ 精选推荐文章 1万+

Out-out-control cars 计算几何(射线与线段相交判定)

题目链接: https://nanti.jisuanke.com/t/A1248 Description Two out-of-control cars crashed within about a half-hour Wednesday afternoon on Deer Park Avenue. This accident alarmed the district governme...

Source_Roc 1414

MounRiver Studio(MRS)使用技巧:添加头文件目录;增加代码分组

MounRiver Studio(MRS)使用技巧:添加头文件目录

cheng___yi的博客 1809

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

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

921

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

dizhuo0219的博客 311

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

A 407

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【POJ - 3304 Segments】 直线线段相交判断

C - 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

于心有愧丶 699

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

【POJ-3304-Segments】 判断线段与直线相交情况

POJ-3304-Segments 题意 给你n条线段,求是否有一条直线,满足所有直线在其上面的投影有公共的交点 1&amp;lt;=n&amp;lt;=1001&amp;lt;=n&amp;lt;=1001&lt;=n&lt;=100 做法 首先如果投影有公共的交点,那么如果在那个公共的交点上做垂线,肯定会穿过n条线段,所以我们只要看是否存在一条直线与所有线段都相交即可,而与这n条线断都相交的直...

lajiyuan的博客 275

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

题目链接:点击打开链接

Baoli1008的专栏 617

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

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

超越自我就是成功 526

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

题意:给你一些线段 问你它们的投影有没有一部分可以重叠在一起 思路:投影重叠在一起 其实也就是是否存在一条直线 使得它与所有线段都相交 注意这里相交并不是单纯的规范相交 那么如何判断线段与直线非规范相交呢 我们找到直线上两个点a1 a2 对于一条线段b1 b2如果Cross(a2 - a1, b1 - a1) * Cross(a2 - a1, b2 - a1) 对于几何题 清晰的思路以及可读

s_h_r 446

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,

世界很大 607

poj3304Segments【判断直线与多条线段相交】

Language: Default Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11026   Accepted: 3456 Description Given n segments in the two dimensional space

走一步再走一步 670

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

http://poj.org/problem?id=3304 等价于是否存在一条直线穿过所有线段 判断直线与线段是否相交: 首先用两点p1,p2确定了一条直线 在用p1,p2分别与计算线段两个端点计算叉乘即可 ,叉乘之积>0就说明线段两端点在直线的同侧,也就是直线不经过此线段 注意顺序不要搞反了 #include<iostream> #include<...

weixin_30659829的博客 128

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 p...

Happig的博客 250
上一篇: UVA 10534 Wavio Sequence (双向LIS)
下一篇: 用getchar()和putchar()加速IO(含整型快速IO和浮点型快速IO)
synapse7
博客等级 码龄14年 432粉丝 701原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值