1444 Parallelepiped walk
做法一可以嘗試分類討論。具體類似這道題目The Return of Carl。然后也可以觀察分類討論的幾種情況。如下圖:
可以發(fā)現(xiàn)他們沿x軸一個方向走,沿y軸也是一個方向走,不會來回。(這點(diǎn)很重要,如果不發(fā)現(xiàn)這一點(diǎn)直接搜的話,會搜出更短的但不合法的距離。) 也可以判是否路線經(jīng)過了所有的矩形,如果經(jīng)過了,就是一條合法路徑。
出題者應(yīng)該會避免相切的數(shù)據(jù)。和當(dāng)前木棍在同一直線上的特殊點(diǎn),一種可以根據(jù)線段的中心確定它會不會阻擋。
另外一種連中心也在同一條直線上。這時認(rèn)為在有木棍實(shí)體的那側(cè)的特殊點(diǎn)不會阻擋,而另一側(cè)會。
總的來說,障礙物(一條線段)他可能出現(xiàn)的位置是0~360。而難區(qū)分的是0度和360度。如果發(fā)現(xiàn)一個點(diǎn)落在0度或360度的位置時,通過判斷障礙物在左邊(包括平行的時候)還是在右邊來確定會不會阻擋。
還可以通過讓木棍轉(zhuǎn)動一個小的角度,看一下是遠(yuǎn)離障礙物,還是和障礙物相交來確定是否會阻擋。