计算几何初步
兩點之間距離
歐氏距離
即歐幾里得距離。
平面內兩點的距離為
\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} \]立體空間內兩點的距離為
\[\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2} \]\(\dots\)
\(n\) 維空間內兩點的距離為
\[\sqrt{\sum_{i=1}^{n}{(x_1-x_2)^2}} \]曼哈頓距離
二維空間內,兩點之間距離為
\[d(A,B)=|x_1-x_2|+|y_1-y_2| \]\(n\) 維空間內兩點的距離為
\[\sum_{i=1}^{n}{|x_1-x_2|} \]性質 \(-\) 三角形不等式:從點 \(i\) 到 \(i\) 的直接距離不會大于途經的任何其它點 \(k\) 的距離。
\[d(i,j)\le d(i,k)+d(k,j) \]切比雪夫距離
二維空間內,兩點之間距離為
\[d(A,B)=\min{(|x_1-x_2|,|y_1-y_2|)} \]曼哈頓距離與切比雪夫距離的相互轉化
設 \(A(x_1,y_1),B(x_2,y_2)\) ,
-
曼哈頓坐標系是通過切比雪夫坐標系旋轉 \(45^\circ\) 后,再縮小到原來的一半得到的
-
把每個點 \((x,y)\) 轉化為 \((x+y,x-y)\) ,新坐標系下的切比雪夫距離 就是 原坐標系下的曼哈頓距離 。
-
把每個點 \((x,y)\) 轉化為 \((\dfrac{x+y}{2},\dfrac{x-y}{2})\) ,新坐標系下的曼哈頓距離 就是 原坐標系下的切比雪夫距離 。
例題
P5098 [USACO04OPEN]Cave Cows 3
對于式子 \(|x_1-x_2|+|y_1-y_2|\) ,可以假設 \(x_1-x_2\ge 0\) ,根據 \(y_1-y_2\) 正負分類討論:
- \(y_1-y_2\ge 0\) :
- \(y_1-y_2< 0\) :
分別求出 \(x+y\) 和 \(x-y\) 的最大、最小值之差即可。
P4648 [IOI2007] pairs 動物對數 (曼哈頓距離轉切比雪夫距離)
P3964 [TJOI2013]松鼠聚會 (切比雪夫距離轉曼哈頓距離)
向量叉積
對于點對 \((A,B,C)\) ,設:
\(x_1=A_x-B_x,y_1-A_y-B_y,x_2=C_x-B_x,y_2=C_y-B_y\)
若:
\[(x_1\times y_2-x_2\times y_2)>0 \]則:
若:
\[(x_1\times y_2-x_2\times y_2)<0 \]則:
因此我們就可以利用叉積來維護凸包以及多邊形面積。
點的旋轉
讓點 \((x_1,y_1)\) 繞點 \((x_2,y_2)\) 旋轉 \(t^o\) :
\(x=(x_1-x_2)\times \cos{t}-(y_1-y_2)\times \sin{t}+x_2\)
\(y=(x_1-x_2)\times \sin{t}+(y_1-y_2)\times \cos{t}+y_2\)
總結
- 上一篇: 临别殷勤重寄词中的殷勤什么意思长恨歌 长
- 下一篇: 初赛—算法复杂度