[ABC339D]Synchronized Players

xinyimama發表於2024-07-15

題目大意

給定一個N*N的地圖,地圖中#表示不能走,地圖上有兩個人,兩個人每次走的方向都相同,每次只能向相同的方向走,,問最少幾步就能相遇?

題解

這個題一看就是搜尋,廣搜,剛開始我陷入一個誤區,讓兩個人分開記錄狀態,這個時候有個問題,當一個人能走,另一個人不能走的時候,步數就不同步,這個問題就不好解決

開始的時候,我是怎麼解決的?為了讓兩個人的步數一致,如果不能走的時候,我會把隊頭重新入對,這樣會產生一個問題,如果兩個人都不能走的話,會出現死迴圈

當我把這個程式碼交上去的時候,TLE了,這個時候我突然想到,我為什麼將兩個人變成一個人,用一種狀態表示?

其實,出現這個問題的最主要原因是,沒有好好理解狀態這個詞,這個題,我們可以將兩個人理解為一個人,因為他們是同步走的,所以我們將兩個人看成是一個人,這樣狀態就是\(N^{4}\),狀態數也不是很多,直接bfs就可以了

後來我再看那個TLE的程式碼,思想是對的,程式碼寫錯了

相關文章