一些奇怪的东西?

本文深入解析了几何计算中的两个关键问题:点到链的距离计算公式及其几何意义,以及如何通过数学方法判断并计算两个矩形相交部分的坐标。通过详细推导,帮助读者理解算法背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


点到链的距离

设点kkk,链的端点(i,j)( i , j )(i,j),点到链的距离为DDD

定义d[i,j]d [ i , j ]d[i,j]表示点iii到点jjj的距离。

可得 D=d[i,k]+d[j,k]−d[i,j]2D=\frac{d[i,k]+d[j,k]-d[i,j]}{2}D=2d[i,k]+d[j,k]d[i,j]

原理如图:

在这里插入图片描述


矩形的相交区域坐标

在这里插入图片描述

设黑色矩形左上角坐标 ( x1 , y1 ),右下角 ( x2 , y2 ) ;

红矩形左上角坐标 ( a1 , b1 ),右下角 ( a2 , b2 )。

根据重点公式,可以算出 O1=(x1+x22,y1+y22),O2=(a1+a22,b1+b22)O1 = ( \frac{ x1 + x2 }{2} , \frac{ y1 + y2 }{2} ) ,O2 = ( \frac{ a1 + a2 }{2} , \frac{ b1 + b2 }{2})O1=(2x1+x2,2y1+y2)O2=(2a1+a2,2b1+b2)

所以相交的条件就是:

abs(x1+x22−a1+a22)&lt;=x2−x12+a2−a12abs(\frac{ x1 + x2 }{2}-\frac{ a1 + a2 }{2})&lt;=\frac{x2-x1}{2}+\frac{a2-a1}{2}abs(2x1+x22a1+a2)<=2x2x1+2a2a1

abs(y1+y22−b1+b22)&lt;=y2−y12+b2−b12abs(\frac{ y1 + y2 }{2}-\frac{ b1 + b2 }{2})&lt;=\frac{y2-y1}{2}+\frac{b2-b1}{2}abs(2y1+y22b1+b2)<=2y2y1+2b2b1

整理得

abs(x1+x2−a1−a2)&lt;=x2−x1+a2−a1abs( x1 + x2 - a1 - a2)&lt;=x2-x1+a2-a1abs(x1+x2a1a2)<=x2x1+a2a1

abs(y1+y2−b1−b2)&lt;=y2−y1+b2−b1abs( y1 + y2 - b1 - b2)&lt;=y2-y1+b2-b1abs(y1+y2b1b2)<=y2y1+b2b1

判断完相交,就是求相交部分的坐标了。

也很好看出来,左上角是 (max(x1,a1),min(x2,a2))( max(x1,a1) , min(x2,a2))(max(x1,a1),min(x2,a2)),右下角是(max(y1,b1),min(y2,b2))(max(y1,b1),min(y2,b2))(max(y1,b1),min(y2,b2))


假的范围?

对于一些大得诡异的数据范围,可以先计算下是不是真的需要处理这么大的范围。

有时候数据大到一定程度可以直接输出不用考虑。


容斥原理

容斥原理中奇数个条件即相减,偶数个条件即相加。


树?

树的 子树、遍历 等问题考虑压成序列处理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值