点到链的距离
设点
k,链的端点
(i,j),点到链的距离为
D。
定义
d[i,j]表示点
i到点
j的距离。
可得
D=2d[i,k]+d[j,k]−d[i,j]
原理如图:
矩形的相交区域坐标
设黑色矩形左上角坐标 ( x1 , y1 ),右下角 ( x2 , y2 ) ;
红矩形左上角坐标 ( a1 , b1 ),右下角 ( a2 , b2 )。
根据重点公式,可以算出
O1=(2x1+x2,2y1+y2),O2=(2a1+a2,2b1+b2)。
所以相交的条件就是:
abs(2x1+x2−2a1+a2)<=2x2−x1+2a2−a1
且
abs(2y1+y2−2b1+b2)<=2y2−y1+2b2−b1
整理得
abs(x1+x2−a1−a2)<=x2−x1+a2−a1
且
abs(y1+y2−b1−b2)<=y2−y1+b2−b1
判断完相交,就是求相交部分的坐标了。
也很好看出来,左上角是
(max(x1,a1),min(x2,a2)),右下角是
(max(y1,b1),min(y2,b2))。
假的范围?
对于一些大得诡异的数据范围,可以先计算下是不是真的需要处理这么大的范围。
有时候数据大到一定程度可以直接输出不用考虑。