這個題目很簡單,但是細節處理麻煩,以至於做得想吐。
題目大意:題目給出
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...