Poj 3072 Robot(單源最短路徑)

2021-09-30 08:17:59 字數 1125 閱讀 9859

這個題目很簡單,但是細節處理麻煩,以至於做得想吐。

題目大意:題目給出

n個點的座標,機械人一次性可以移動的最長距離

r,當機械人要走向(

xj,yj

)時,必須轉向(

xj,yj).

沒轉1度需要1

秒,初始化機械人指向(

xn,yn

)。求機械人從(x1,

y1)到(

xn,yn

)所需要的時間。

大體思路:從(

x1,y1)出發,在(x1,

y1)的方向是指向(

xn,yn

)的,初始化所有的點到

(x1,y1)

的時間**角需要的時間和距離所花費的時間)(

x1->xi

)。加入時間最小的節點

(xm,ym)

。更新其他未加入的節點的時間,如果(

node1->nodem->nodej

)比(node1->nodej

)所花費的時間少,同時

nodem->nodej

能夠到達(他們之間的距離小於最長距離),則更新

nodej

所需要的時間,否則不需要。繼續加入最小的節點。直到(

xn,yn

)加入。

算距離倒沒什麼問題,但是角度轉化和角度計算我花費了很多時間。

題目提示了使用

atan2(),

最開始沒有引起我的重視,我直接用的

atan

(),可是

atan()

的值域是(

-pi/2,pi/2);

只有atan2()

的值域是(

-pi,pi).

這樣子才能取到

4個象限的角度。因為題目給的是1秒轉

1°,所以我們必須把它轉化為角度

,atan2

()*180.0/pi.

當從角度

ʘ1轉到

ʘ2時,我最開始誤以為直接|ʘ1

- ʘ2|

,可是當|ʘ1

- ʘ2|>180

°時,robot

就會從逆方向旋轉。需要旋轉的角度就變成了

360-|

ʘ1- ʘ2|。

堆優化的單源最段路

堆優化的單源最段路 例題洛谷模版題p4779題 author columbine1999 baofat date 2019 02 08 09 52 27 projextname p4779 堆優化的單源最短路 version v version path tm directory descirpti...

POJ 1847 Tram 單源最短路徑

題意 軌道網,有若干轉換器,每個轉換器都和其他若干轉換器相連,轉換器初始指向第乙個與其相連的轉換器。問要到達終點需要最少轉換多少次?思路 可以用dijkstra單源最短路來做,把軌道網看做有向圖 因為1第乙個指向2,2的第乙個不一定指向1 當前轉換器處始指向的那個轉換器之間的路徑權值為0,其他路徑權...

用scheme語言實現SPFA演算法(單源最短路)

最近自己陷入了很長時間的學習和思考之中,突然發現好久沒有更新博文了,於是便想更新一篇。這篇文章是我之前程式語言課作業中一段 用scheme語言實現單源最段路演算法。當時的我,花了一整天時間,學習了scheme並實現了spfa演算法,那天實現之後感覺很有成就感 在這裡貼出來,以饗讀者。突然發現不支援s...